-
Notifications
You must be signed in to change notification settings - Fork 826
Error on invalid declarations in type definitions. #18813
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 43 commits
1799aaf
55507e9
1738018
65f5bb6
0c97b9d
6f2b706
e8f1bb0
75d8f5e
4f2e97e
63be5d5
4248f2a
cc96217
e270b88
e0cc65a
1e29d58
1470bf9
8988215
74712e8
967c4a9
a30cef4
5fa0480
15e3d34
b7ffcf8
5bde641
0f7c23c
8f0683d
569b382
89ec72a
e61b027
6074eb5
765a7ff
a252caf
fdc5dee
72385a6
4b01e49
9289979
6a0e283
634cddf
e2a941a
26bd14b
8354b89
89d9608
0acdd53
0f1c26f
b98dbdf
a9e53fa
f7b4c2c
bdf8a93
0b46a40
6a9ddd9
3c00990
cca0cc8
399755a
20cd646
f625bbb
b55be44
3a37b06
7585e04
9589158
efe20da
7642629
a412c6b
adcd373
46a9848
0a9331a
e42398c
66dbfa2
3e18765
413a200
682cf51
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. | ||
namespace ErrorMessages | ||
|
||
open Xunit | ||
open FSharp.Test.Compiler | ||
|
||
module ``Module definition is encountered inside a type definition`` = | ||
|
||
[<Fact>] | ||
let ``Warn when a module definition is encountered inside a type definition``() = | ||
Fsx """ | ||
type IFace = | ||
abstract F : int -> int | ||
module M = | ||
let f () = () | ||
T-Gro marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
type C () = | ||
member _.F () = 3 | ||
module M2 = | ||
let f () = () | ||
|
||
type U = | ||
| A | ||
| B | ||
module M3 = | ||
let f () = () | ||
|
||
type R = | ||
{ A : int } | ||
module M4 = | ||
let f () = () | ||
|
||
type A = A | ||
|
||
module M4 = begin end | ||
module M5 = begin end | ||
module M6 = begin end | ||
|
||
type B = | ||
| B | ||
module M7 = begin end | ||
module M8 = begin end | ||
module M9 = begin end | ||
|
||
module ThisIsFine = | ||
let f () = () | ||
|
||
type D = D | ||
""" | ||
|> withLangVersionPreview | ||
|> typecheck | ||
|> shouldFail | ||
|> withDiagnostics [ | ||
(Warning 554, Line 31, Col 5, Line 31, Col 11, "Invalid declaration syntax") | ||
(Warning 554, Line 32, Col 5, Line 32, Col 11, "Invalid declaration syntax") | ||
(Warning 554, Line 33, Col 5, Line 33, Col 11, "Invalid declaration syntax") | ||
(Warning 554, Line 20, Col 5, Line 20, Col 11, "Invalid declaration syntax") | ||
(Warning 554, Line 15, Col 5, Line 15, Col 11, "Invalid declaration syntax") | ||
(Warning 554, Line 9, Col 5, Line 9, Col 11, "Invalid declaration syntax"); | ||
(Warning 554, Line 4, Col 5, Line 4, Col 11, "Invalid declaration syntax") | ||
] | ||
|
||
[<Fact>] | ||
let ``Don't warn when a module definition is encountered inside a type definition``() = | ||
Fsx """ | ||
type IFace = | ||
abstract F : int -> int | ||
module M = | ||
let f () = () | ||
|
||
type C () = | ||
member _.F () = 3 | ||
module M2 = | ||
let f () = () | ||
|
||
type U = | ||
| A | ||
| B | ||
module M3 = | ||
let f () = () | ||
|
||
type R = | ||
{ A : int } | ||
module M4 = | ||
let f () = () | ||
|
||
type A = A | ||
|
||
module M5 = begin end | ||
module M6 = begin end | ||
module M7 = begin end | ||
|
||
type B = | ||
| B | ||
module M8 = begin end | ||
module M9 = begin end | ||
module M10 = begin end | ||
|
||
module ThisIsFine = | ||
let f () = () | ||
|
||
type D = D | ||
""" | ||
|> withLangVersion10 | ||
|> typecheck | ||
|> shouldSucceed |
Uh oh!
There was an error while loading. Please reload this page.