diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
index 0c1d3cf9273..d4d24ac98ec 100644
--- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
+++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
@@ -42,96 +42,7 @@
-
- SyntaxTree\TypeTests.fs
-
-
- SyntaxTree\ExpressionTests.fs
-
-
- SyntaxTree\StringTests.fs
-
-
- SyntaxTree\ModuleOrNamespaceTests.fs
-
-
- SyntaxTree\ModuleOrNamespaceSigTests.fs
-
-
- SyntaxTree\SignatureTypeTests.fs
-
-
- SyntaxTree\MeasureTests.fs
-
-
- SyntaxTree\MatchClauseTests.fs
-
-
- SyntaxTree\SourceIdentifierTests.fs
-
-
- SyntaxTree\NestedModuleTests.fs
-
-
- SyntaxTree\BindingTests.fs
-
-
- SyntaxTree\ParsedHashDirectiveTests.fs
-
-
- SyntaxTree\LambdaTests.fs
-
-
- SyntaxTree\IfThenElseTests.fs
-
-
- SyntaxTree\UnionCaseTests.fs
-
-
- SyntaxTree\EnumCaseTests.fs
-
-
- SyntaxTree\PatternTests.fs
-
-
- SyntaxTree\ExceptionTests.fs
-
-
- SyntaxTree\MemberFlagTests.fs
-
-
- SyntaxTree\MemberTests.fs
-
-
- SyntaxTree\ComputationExpressionTests.fs
-
-
- SyntaxTree\ConditionalDirectiveTests.fs
-
-
- SyntaxTree\CodeCommentTests.fs
-
-
- SyntaxTree\OperatorNameTests.fs
-
-
- SyntaxTree\SynIdentTests.fs
-
-
- SyntaxTree\SynTypeTests.fs
-
-
- SyntaxTree\AttributeTests.fs
-
-
- SyntaxTree\ExternTests.fs
-
-
- SyntaxTree\LeadingKeywordTests.fs
-
-
- SyntaxTree\ValTests.fs
-
+
FileSystemTests.fs
diff --git a/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj b/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj
index f3176edc047..a1b239c1141 100644
--- a/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj
+++ b/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj
@@ -36,75 +36,7 @@
CompilerService\Symbols.fs
-
- SyntaxTree\TypeTests.fs
-
-
- SyntaxTree\ExpressionTests.fs
-
-
- SyntaxTree\StringTests.fs
-
-
- SyntaxTree\ModuleOrNamespaceTests.fs
-
-
- SyntaxTree\ModuleOrNamespaceSigTests.fs
-
-
- SyntaxTree\SignatureTypeTests.fs
-
-
- SyntaxTree\MeasureTests.fs
-
-
- SyntaxTree\MatchClauseTests.fs
-
-
- SyntaxTree\SourceIdentifierTests.fs
-
-
- SyntaxTree\NestedModuleTests.fs
-
-
- SyntaxTree\BindingTests.fs
-
-
- SyntaxTree\ParsedHashDirectiveTests.fs
-
-
- SyntaxTree\LambdaTests.fs
-
-
- SyntaxTree\IfThenElseTests.fs
-
-
- SyntaxTree\UnionCaseTests.fs
-
-
- SyntaxTree\EnumCaseTests.fs
-
-
- SyntaxTree\PatternTests.fs
-
-
- SyntaxTree\ExceptionTests.fs
-
-
- SyntaxTree\MemberFlagTests.fs
-
-
- SyntaxTree\ComputationExpressionTests.fs
-
-
- SyntaxTree\ConditionalDirectiveTests.fs
-
-
- SyntaxTree\CodeCommentTests.fs
-
-
- SyntaxTree\OperatorNameTests.fs
-
+
CompilerService\EditorTests.fs
diff --git a/tests/service/SyntaxTreeTests.fs b/tests/service/SyntaxTreeTests.fs
new file mode 100644
index 00000000000..89688b3e114
--- /dev/null
+++ b/tests/service/SyntaxTreeTests.fs
@@ -0,0 +1,170 @@
+module Tests.Service.SyntaxTree
+
+open System.IO
+open FSharp.Compiler.CodeAnalysis
+open FSharp.Compiler.Service.Tests.Common
+open FSharp.Compiler.Syntax
+open FSharp.Compiler.Text
+open NUnit.Framework
+
+let testCasesDir = Path.Combine(__SOURCE_DIRECTORY__, "data", "SyntaxTree")
+
+let allTestCases =
+ Directory.EnumerateFiles(testCasesDir, "*.fs?", SearchOption.AllDirectories)
+ |> Seq.map (fun f ->
+ let fileInfo = FileInfo(f)
+ let fileName = Path.Combine(fileInfo.Directory.Name, fileInfo.Name)
+ [| fileName :> obj |])
+ |> Seq.toArray
+
+[]
+let RootDirectory = @"/root"
+
+///
+/// Everytime `__SOURCE_DIRECTORY__` was used in the code, the ast will contain an invalid value and range for it.
+/// This should be cleaned up when the test runs during CI/CD.
+///
+///
+/// This function is incomplete and does not clean up the entire ParsedInput.
+/// A shortcut was made to only support the existing use-cases.
+///
+let private sanitizeAST (sourceDirectoryValue: string) (ast: ParsedInput) : ParsedInput =
+ let isZero (m: range) =
+ m.StartLine = 0 && m.StartColumn = 0 && m.EndLine = 0 && m.EndColumn = 0
+
+ // __SOURCE_DIRECTORY__ will contain the evaluated value, so we want to replace it with a stable value instead.
+ let mapParsedHashDirective (ParsedHashDirective(ident, args, _) as phd) =
+ match args with
+ | [ ParsedHashDirectiveArgument.SourceIdentifier("__SOURCE_DIRECTORY__", _, mSourceDirectory) ] ->
+ let mZero =
+ Range.mkRange mSourceDirectory.FileName (Position.mkPos 0 0) (Position.mkPos 0 0)
+
+ ParsedHashDirective(
+ ident,
+ [ ParsedHashDirectiveArgument.SourceIdentifier("__SOURCE_DIRECTORY__", sourceDirectoryValue, mZero) ],
+ mZero
+ )
+ | _ -> phd
+
+ let (|SourceDirectoryConstant|_|) (constant: SynConst) =
+ match constant with
+ | SynConst.SourceIdentifier("__SOURCE_DIRECTORY__", _, mSourceDirectory) ->
+ let mZero =
+ Range.mkRange mSourceDirectory.FileName (Position.mkPos 0 0) (Position.mkPos 0 0)
+
+ Some(SynConst.SourceIdentifier("__SOURCE_DIRECTORY__", sourceDirectoryValue, mZero), mZero)
+ | _ -> None
+
+ let (|SourceDirectoryConstantExpr|_|) (expr: SynExpr) =
+ match expr with
+ | SynExpr.Const(SourceDirectoryConstant(constant, mZero), _) -> Some(SynExpr.Const(constant, mZero))
+ | _ -> None
+
+ let rec mapSynModuleDecl (mdl: SynModuleDecl) =
+ match mdl with
+ | SynModuleDecl.HashDirective(ParsedHashDirective(range = mZero) as hd, m) ->
+ let hd = mapParsedHashDirective hd
+ // Only update the range of SynModuleSigDecl.HashDirective if the value was updated.
+ let m = if isZero mZero then mZero else m
+ SynModuleDecl.HashDirective(hd, m)
+ | SynModuleDecl.NestedModule(moduleInfo, isRecursive, decls, isContinuing, range, trivia) ->
+ SynModuleDecl.NestedModule(moduleInfo, isRecursive, List.map mapSynModuleDecl decls, isContinuing, range, trivia)
+ | SynModuleDecl.Expr(SourceDirectoryConstantExpr(expr), _) -> SynModuleDecl.Expr(expr, expr.Range)
+ | _ -> mdl
+
+ let mapSynModuleOrNamespace (SynModuleOrNamespace(longId, isRecursive, kind, decls, xmlDoc, attribs, ao, range, trivia)) =
+ SynModuleOrNamespace(longId, isRecursive, kind, List.map mapSynModuleDecl decls, xmlDoc, attribs, ao, range, trivia)
+
+ let rec mapSynModuleDeclSig (msdl: SynModuleSigDecl) =
+ match msdl with
+ | SynModuleSigDecl.HashDirective(ParsedHashDirective(range = mZero) as hd, m) ->
+ let hd = mapParsedHashDirective hd
+ // Only update the range of SynModuleSigDecl.HashDirective if the value was updated.
+ let m = if isZero mZero then mZero else m
+ SynModuleSigDecl.HashDirective(hd, m)
+ | SynModuleSigDecl.NestedModule(moduleInfo, isRecursive, decls, range, trivia) ->
+ SynModuleSigDecl.NestedModule(moduleInfo, isRecursive, List.map mapSynModuleDeclSig decls, range, trivia)
+ | _ -> msdl
+
+ let mapSynModuleOrNamespaceSig (SynModuleOrNamespaceSig(longId, isRecursive, kind, decls, xmlDoc, attribs, ao, range, trivia)) =
+ SynModuleOrNamespaceSig(longId, isRecursive, kind, List.map mapSynModuleDeclSig decls, xmlDoc, attribs, ao, range, trivia)
+
+ match ast with
+ | ParsedInput.ImplFile(ParsedImplFileInput(fileName,
+ isScript,
+ qualifiedNameOfFile,
+ scopedPragmas,
+ hashDirectives,
+ contents,
+ flags,
+ trivia,
+ identifiers)) ->
+ ParsedImplFileInput(
+ fileName,
+ isScript,
+ qualifiedNameOfFile,
+ scopedPragmas,
+ List.map mapParsedHashDirective hashDirectives,
+ List.map mapSynModuleOrNamespace contents,
+ flags,
+ trivia,
+ identifiers
+ )
+ |> ParsedInput.ImplFile
+ | ParsedInput.SigFile(ParsedSigFileInput(fileName, qualifiedNameOfFile, scopedPragmas, hashDirectives, contents, trivia, identifiers)) ->
+ ParsedSigFileInput(
+ fileName,
+ qualifiedNameOfFile,
+ scopedPragmas,
+ List.map mapParsedHashDirective hashDirectives,
+ List.map mapSynModuleOrNamespaceSig contents,
+ trivia,
+ identifiers
+ )
+ |> ParsedInput.SigFile
+
+let parseSourceCode (name: string, code: string) =
+ let location = Path.Combine(RootDirectory, name).Replace("\\", "/")
+
+ let parseResults =
+ checker.ParseFile(
+ location,
+ SourceText.ofString code,
+ { FSharpParsingOptions.Default with
+ SourceFiles = [| location |] }
+ )
+ |> Async.RunImmediate
+
+ let tree = parseResults.ParseTree
+ let sourceDirectoryValue = $"{RootDirectory}/{FileInfo(location).Directory.Name}"
+ sanitizeAST sourceDirectoryValue tree
+
+/// Asserts the parsed untyped tree matches the expected baseline.
+///
+/// To update a baseline:
+/// CMD: set TEST_UPDATE_BSL=1 & dotnet test --filter "ParseFile"
+/// PowerShell: $env:TEST_UPDATE_BSL = "1" ; dotnet test --filter "ParseFile"
+/// Linux/macOS: export TEST_UPDATE_BSL=1 & dotnet test --filter "ParseFile"
+///
+/// Assuming your current directory is tests/FSharp.Compiler.Service.Tests
+[]
+let ParseFile fileName =
+ let fullPath = Path.Combine(testCasesDir, fileName)
+ let contents = File.ReadAllText fullPath
+ let ast = parseSourceCode (fileName, contents)
+ let normalize (s: string) = s.Replace("\r", "")
+ let actual = sprintf "%A" ast |> normalize |> sprintf "%s\n"
+ let bslPath = $"{fullPath}.bsl"
+
+ let expected =
+ if File.Exists bslPath then
+ File.ReadAllText bslPath |> normalize
+ else
+ "No baseline was found"
+
+ let testUpdateBSLEnv = System.Environment.GetEnvironmentVariable("TEST_UPDATE_BSL")
+
+ if not (isNull testUpdateBSLEnv) && testUpdateBSLEnv.Trim() = "1" then
+ File.WriteAllText(bslPath, actual)
+
+ Assert.AreEqual(expected, actual)
diff --git a/tests/service/SyntaxTreeTests/AttributeTests.fs b/tests/service/SyntaxTreeTests/AttributeTests.fs
deleted file mode 100644
index c31aefae85f..00000000000
--- a/tests/service/SyntaxTreeTests/AttributeTests.fs
+++ /dev/null
@@ -1,50 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.AttributeTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``range of attribute`` () =
- let ast =
- """
-[]
-do ()
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile (ParsedImplFileInput(contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls =
- [ SynModuleDecl.Attributes(attributes = [ { Attributes = [ { Range = mAttribute } ] } ]) ; SynModuleDecl.Expr _ ] ) ])) ->
- assertRange (2, 2) (2, 25) mAttribute
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``range of attribute with path`` () =
- let ast =
- """
-[]
-do ()
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile (ParsedImplFileInput(contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls =
- [ SynModuleDecl.Attributes(attributes = [ { Attributes = [ { Range = mAttribute } ] } ]) ; SynModuleDecl.Expr _ ] ) ])) ->
- assertRange (2, 2) (2, 32) mAttribute
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``range of attribute with target`` () =
- let ast =
- """
-[]
-do ()
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile (ParsedImplFileInput(contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls =
- [ SynModuleDecl.Attributes(attributes = [ { Attributes = [ { Range = mAttribute } ] } ]) ; SynModuleDecl.Expr _ ] ) ])) ->
- assertRange (2, 2) (2, 35) mAttribute
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
diff --git a/tests/service/SyntaxTreeTests/BindingTests.fs b/tests/service/SyntaxTreeTests/BindingTests.fs
deleted file mode 100644
index ef6efe22230..00000000000
--- a/tests/service/SyntaxTreeTests/BindingTests.fs
+++ /dev/null
@@ -1,482 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.BindingTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``Range of attribute should be included in SynModuleDecl.Let`` () =
- let parseResults =
- getParseResults
- """
-[]
-let a = 0"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(range = mb)]) as lt
- ]) ])) ->
- assertRange (2, 0) (3, 5) mb
- assertRange (2, 0) (3, 9) lt.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute between let keyword and pattern should be included in SynModuleDecl.Let`` () =
- let parseResults =
- getParseResults
- """
-let [] (A x) = 1"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(range = mb)]) as lt
- ]) ])) ->
- assertRange (2, 4) (2, 21) mb
- assertRange (2, 0) (2, 25) lt.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in SynMemberDefn.LetBindings`` () =
- let parseResults =
- getParseResults
- """
-type Bar =
- []
- let x = 8"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [SynMemberDefn.LetBindings(bindings = [SynBinding(range = mb)]) as m]))])
- ]) ])) ->
- assertRange (3, 4) (4, 9) mb
- assertRange (3, 4) (4, 13) m.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in SynMemberDefn.Member`` () =
- let parseResults =
- getParseResults
- """
-type Bar =
- []
- member this.Something () = ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [SynMemberDefn.Member(memberDefn = SynBinding(range = mb)) as m]))])
- ]) ])) ->
- assertRange (3, 4) (4, 28) mb
- assertRange (3, 4) (4, 33) m.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in binding of SynExpr.ObjExpr`` () =
- let parseResults =
- getParseResults
- """
-{ new System.Object() with
- []
- member x.ToString() = "F#" }"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.ObjExpr(members = [SynMemberDefn.Member(memberDefn=SynBinding(range = mb))]))
- ]) ])) ->
- assertRange (3, 4) (4, 23) mb
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in constructor SynMemberDefn.Member`` () =
- let parseResults =
- getParseResults
- """
-type Tiger =
- []
- new () = ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [SynMemberDefn.Member(memberDefn = SynBinding(range = mb)) as m]))])
- ]) ])) ->
- assertRange (3, 4) (4, 10) mb
- assertRange (3, 4) (4, 15) m.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in constructor SynMemberDefn.Member, optAsSpec`` () =
- let parseResults =
- getParseResults
- """
-type Tiger =
- []
- new () as tony = ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [SynMemberDefn.Member(memberDefn = SynBinding(range = mb)) as m]))])
- ]) ])) ->
- assertRange (3, 4) (4, 18) mb
- assertRange (3, 4) (4, 23) m.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in secondary constructor`` () =
- let parseResults =
- getParseResults
- """
-type T() =
- new () =
- T ()
-
- internal new () =
- T ()
-
- []
- new () =
- T ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.ImplicitCtor _
- SynMemberDefn.Member(memberDefn = SynBinding(range = mb1)) as m1
- SynMemberDefn.Member(memberDefn = SynBinding(range = mb2)) as m2
- SynMemberDefn.Member(memberDefn = SynBinding(range = mb3)) as m3
- ]))])
- ]) ])) ->
- assertRange (3, 4) (3, 10) mb1
- assertRange (3, 4) (4, 12) m1.Range
- assertRange (6, 4) (6, 19) mb2
- assertRange (6, 4) (7, 12) m2.Range
- assertRange (9, 4) (10, 10) mb3
- assertRange (9, 4) (11, 12) m3.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in write only SynMemberDefn.Member property`` () =
- let parseResults =
- getParseResults
- """
-type Crane =
- []
- member this.MyWriteOnlyProperty with set (value) = myInternalValue <- value"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members =
- [SynMemberDefn.GetSetMember(memberDefnForSet = Some (SynBinding(range = mb))) as m]))])
- ]) ])) ->
- assertRange (3, 4) (4, 52) mb
- assertRange (3, 4) (4, 79) m.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in full SynMemberDefn.Member property`` () =
- let parseResults =
- getParseResults
- """
-type Bird =
- []
- member this.TheWord
- with get () = myInternalValue
- and set (value) = myInternalValue <- value"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.GetSetMember(Some (SynBinding(range = mb1)), Some (SynBinding(range = mb2)), m, _)
- ]))])
- ]) ])) ->
- assertRange (3, 4) (5, 19) mb1
- assertRange (3, 4) (6, 23) mb2
- assertRange (3, 4) (6, 50) m
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present in SynModuleDecl.Let binding`` () =
- let parseResults =
- getParseResults "let v = 12"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(trivia={ EqualsRange = Some mEquals })])
- ]) ])) ->
- assertRange (1, 6) (1, 7) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present in SynModuleDecl.Let binding, typed`` () =
- let parseResults =
- getParseResults "let v : int = 12"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(trivia={ EqualsRange = Some mEquals })])
- ]) ])) ->
- assertRange (1, 12) (1, 13) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present in local Let binding`` () =
- let parseResults =
- getParseResults
- """
-do
- let z = 2
- ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.Do(expr = SynExpr.LetOrUse(bindings = [SynBinding(trivia={ EqualsRange = Some mEquals })])))
- ]) ])) ->
- assertRange (3, 10) (3, 11) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present in local Let binding, typed`` () =
- let parseResults =
- getParseResults
- """
-do
- let z: int = 2
- ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.Do(expr = SynExpr.LetOrUse(bindings = [SynBinding(trivia={ EqualsRange = Some mEquals })])))
- ]) ])) ->
- assertRange (3, 15) (3, 16) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present in member binding`` () =
- let parseResults =
- getParseResults
- """
-type X() =
- member this.Y = z
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [ _; SynMemberDefn.Member(memberDefn = SynBinding(trivia={ EqualsRange = Some mEquals }))]))])
- ]) ])) ->
- assertRange (3, 18) (3, 19) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present in member binding, with parameters`` () =
- let parseResults =
- getParseResults
- """
-type X() =
- member this.Y () = z
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [ _; SynMemberDefn.Member(memberDefn = SynBinding(trivia={ EqualsRange = Some mEquals }))]))])
- ]) ])) ->
- assertRange (3, 21) (3, 22) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present in member binding, with return type`` () =
- let parseResults =
- getParseResults
- """
-type X() =
- member this.Y () : string = z
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [ _; SynMemberDefn.Member(memberDefn = SynBinding(trivia={ EqualsRange = Some mEquals }))]))])
- ]) ])) ->
- assertRange (3, 30) (3, 31) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present in property`` () =
- let parseResults =
- getParseResults
- """
-type Y() =
- member this.MyReadWriteProperty
- with get () = myInternalValue
- and set (value) = myInternalValue <- value
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- _
- SynMemberDefn.GetSetMember(
- Some(SynBinding(trivia={ EqualsRange = Some eqGetM })),
- Some(SynBinding(trivia={ EqualsRange = Some eqSetM })), _, _)
- ]))])
- ]) ])) ->
- assertRange (4, 20) (4, 21) eqGetM
- assertRange (5, 24) (5, 25) eqSetM
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of let keyword should be present in SynModuleDecl.Let binding`` () =
- let parseResults =
- getParseResults "let v = 12"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(trivia={ LeadingKeyword = SynLeadingKeyword.Let mLet })])
- ]) ])) ->
- assertRange (1, 0) (1, 3) mLet
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of let keyword should be present in SynModuleDecl.Let binding with attributes`` () =
- let parseResults =
- getParseResults """
-/// XmlDoc
-[]
-// some comment
-let v = 12
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(trivia={ LeadingKeyword = SynLeadingKeyword.Let mLet })])
- ]) ])) ->
- assertRange (5, 0) (5, 3) mLet
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of let keyword should be present in SynExpr.LetOrUse binding`` () =
- let parseResults =
- getParseResults """
-let a =
- let b c = d
- ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(expr=SynExpr.LetOrUse(bindings=[SynBinding(trivia={ LeadingKeyword = SynLeadingKeyword.Let mLet })]))])
- ]) ])) ->
- assertRange (3, 4) (3, 7) mLet
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Tuple return type of binding should contain stars`` () =
- let parseResults =
- getParseResults """
-let a : int * string = failwith "todo"
-let b : int * string * bool = 1, "", false
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(returnInfo =
- Some (SynBindingReturnInfo(typeName = SynType.Tuple(path = [
- SynTupleTypeSegment.Type _
- SynTupleTypeSegment.Star _
- SynTupleTypeSegment.Type _
- ]))))
- ])
- SynModuleDecl.Let(bindings = [
- SynBinding(returnInfo =
- Some (SynBindingReturnInfo(typeName = SynType.Tuple(path = [
- SynTupleTypeSegment.Type _
- SynTupleTypeSegment.Star _
- SynTupleTypeSegment.Type _
- SynTupleTypeSegment.Star _
- SynTupleTypeSegment.Type _
- ]))))
- ])
- ]) ])) ->
- Assert.Pass ()
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``Colon before return type is part of trivia`` () =
- let parseResults =
- getParseResults """
-let x y : int = failwith "todo"
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(returnInfo =
- Some (SynBindingReturnInfo(trivia = { ColonRange = Some mColon })))
- ])
- ]) ])) ->
- assertRange (2,8) (2,9) mColon
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``Colon before return type is part of trivia in properties`` () =
- let parseResults =
- getParseResults """
-type X =
- member this.Y with get():int = 1 and set (_:int):unit = ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.GetSetMember(
- memberDefnForGet = Some(SynBinding(returnInfo = Some (SynBindingReturnInfo(trivia = { ColonRange = Some mColon1 }))))
- memberDefnForSet = Some(SynBinding(returnInfo = Some (SynBindingReturnInfo(trivia = { ColonRange = Some mColon2 }))))
- )
- ]))
- ])
- ]) ])) ->
- assertRange (3,28) (3,29) mColon1
- assertRange (3,52) (3,53) mColon2
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``Inline keyword in binding`` () =
- let parseResults =
- getParseResults """
-let inline x y z =
- let inline a b c = ()
- ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(trivia = { InlineKeyword = Some mInline1 }
- expr = SynExpr.LetOrUse(bindings = [
- SynBinding(trivia = { InlineKeyword = Some mInline2 })
- ]))
- ])
- ]) ])) ->
- assertRange (2,4) (2,10) mInline1
- assertRange (3,8) (3,14) mInline2
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``Conditional directive around inline keyword`` () =
- let parseResults =
- getParseResults """
-let
-#if !FOO
- inline
-#endif
- map f ar = Async.map (Result.map f) ar
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(trivia = { InlineKeyword = Some mInline }) ])
- ]) ])) ->
- assertRange (4,4) (4,10) mInline
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
diff --git a/tests/service/SyntaxTreeTests/CodeCommentTests.fs b/tests/service/SyntaxTreeTests/CodeCommentTests.fs
deleted file mode 100644
index ce25783eecf..00000000000
--- a/tests/service/SyntaxTreeTests/CodeCommentTests.fs
+++ /dev/null
@@ -1,146 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.CodeCommentTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-let private getCommentTrivia isSignatureFile source =
- let ast = (if isSignatureFile then getParseResultsOfSignatureFile else getParseResults) source
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(trivia = { CodeComments = trivia }))
- | ParsedInput.SigFile(ParsedSigFileInput(trivia = { CodeComments = trivia })) -> trivia
-
-[]
-let ``comment on single line`` () =
- let trivia =
- getCommentTrivia false """
-// comment!
-foo()
-"""
-
- match trivia with
- | [ CommentTrivia.LineComment mComment ] ->
- assertRange (2, 0) (2, 11) mComment
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``comment on single line, signature file`` () =
- let trivia =
- getCommentTrivia true """
-namespace Meh
-// comment!
-foo()
-"""
-
- match trivia with
- | [ CommentTrivia.LineComment mComment ] ->
- assertRange (3, 0) (3, 11) mComment
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``comment after source code`` () =
- let trivia =
- getCommentTrivia false """
-foo() // comment!
-"""
-
- match trivia with
- | [ CommentTrivia.LineComment mComment ] ->
- assertRange (2, 6) (2, 17) mComment
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``comment after source code, signature file`` () =
- let trivia =
- getCommentTrivia true """
-namespace Meh
-
-val foo : int // comment!
-"""
-
- match trivia with
- | [ CommentTrivia.LineComment mComment ] ->
- assertRange (4, 14) (4, 25) mComment
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``block comment in source code`` () =
- let trivia =
- getCommentTrivia false """
-let a (* b *) c = c + 42
-"""
-
- match trivia with
- | [ CommentTrivia.BlockComment mComment ] ->
- assertRange (2, 6) (2, 13) mComment
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``block comment in source code, signature file`` () =
- let trivia =
- getCommentTrivia true """
-namespace Meh
-
-val a (* b *) : int
-"""
-
- match trivia with
- | [ CommentTrivia.BlockComment mComment ] ->
- assertRange (4, 6) (4, 13) mComment
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``comment at end of file`` () =
- let trivia =
- getCommentTrivia false "x // y"
-
- match trivia with
- | [ CommentTrivia.LineComment mComment ] ->
- assertRange (1, 2) (1, 6) mComment
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``triple slash comment should not be captured`` () =
- let trivia =
- getCommentTrivia false """
-/// Some great documentation comment
-let x = 0
-"""
-
- match trivia with
- | [] ->
- Assert.Pass()
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``triple slash comment should be captured, if used in an invalid location`` () =
- let trivia =
- getCommentTrivia false """
-/// Valid xml doc
-let x =
- /// Some great documentation comment
-
- /// With a blank line in between
- /// but on a while loop
- while true do ()
- a + 1
-"""
-
- match trivia with
- | [ CommentTrivia.LineComment m1
- CommentTrivia.LineComment m2
- CommentTrivia.LineComment m3 ] ->
- assertRange (4, 4) (4, 40) m1
- assertRange (6, 4) (6, 36) m2
- assertRange (7, 4) (7, 27) m3
- | _ ->
- Assert.Fail "Could not get valid AST"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/ComputationExpressionTests.fs b/tests/service/SyntaxTreeTests/ComputationExpressionTests.fs
deleted file mode 100644
index 243a06165c8..00000000000
--- a/tests/service/SyntaxTreeTests/ComputationExpressionTests.fs
+++ /dev/null
@@ -1,57 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.ComputationExpressionTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``SynExprAndBang range starts at and! and ends after expression`` () =
- let ast =
- getParseResults """
-async {
- let! bar = getBar ()
-
- and! foo = getFoo ()
-
- return bar
-}
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr (expr = SynExpr.App(argExpr = SynExpr.ComputationExpr(expr = SynExpr.LetOrUseBang(andBangs = [
- SynExprAndBang(range = mAndBang)
- ]))))
- ])
- ])) ->
- assertRange (5, 4) (5, 24) mAndBang
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``multiple SynExprAndBang have range that starts at and! and ends after expression`` () =
- let ast =
- getParseResults """
-async {
- let! bar = getBar ()
- and! foo = getFoo () in
- and! meh = getMeh ()
- return bar
-}
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr (expr = SynExpr.App(argExpr = SynExpr.ComputationExpr(expr = SynExpr.LetOrUseBang(andBangs = [
- SynExprAndBang(range = mAndBang1; trivia={ InKeyword = Some mIn })
- SynExprAndBang(range = mAndBang2)
- ]))))
- ])
- ])) ->
- assertRange (4, 4) (4, 24) mAndBang1
- assertRange (4, 25) (4, 27) mIn
- assertRange (5, 4) (5, 24) mAndBang2
- | _ ->
- Assert.Fail "Could not get valid AST"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/ConditionalDirectiveTests.fs b/tests/service/SyntaxTreeTests/ConditionalDirectiveTests.fs
deleted file mode 100644
index b48262d370b..00000000000
--- a/tests/service/SyntaxTreeTests/ConditionalDirectiveTests.fs
+++ /dev/null
@@ -1,357 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.ConditionalDirectiveTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-let private getDirectiveTrivia isSignatureFile source =
- let ast = (if isSignatureFile then getParseResultsOfSignatureFile else getParseResults) source
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(trivia = { ConditionalDirectives = trivia }))
- | ParsedInput.SigFile(ParsedSigFileInput(trivia = { ConditionalDirectives = trivia })) -> trivia
-
-[]
-let ``single #if / #endif`` () =
- let trivia =
- getDirectiveTrivia false """
-let v =
- #if DEBUG
- ()
- #endif
- 42
-"""
-
- match trivia with
- | [ ConditionalDirectiveTrivia.If(expr, mIf)
- ConditionalDirectiveTrivia.EndIf mEndif ] ->
- assertRange (3, 4) (3, 13) mIf
- assertRange (5, 4) (5, 10) mEndif
-
- match expr with
- | IfDirectiveExpression.Ident "DEBUG" -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr}"
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``single #if / #else / #endif`` () =
- let trivia =
- getDirectiveTrivia false """
-let v =
- #if DEBUG
- 30
- #else
- 42
- #endif
-"""
-
- match trivia with
- | [ ConditionalDirectiveTrivia.If(expr, mIf)
- ConditionalDirectiveTrivia.Else mElse
- ConditionalDirectiveTrivia.EndIf mEndif ] ->
- assertRange (3, 4) (3, 13) mIf
- assertRange (5, 4) (5, 9) mElse
- assertRange (7, 4) (7, 10) mEndif
-
- match expr with
- | IfDirectiveExpression.Ident "DEBUG" -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr}"
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``nested #if / #else / #endif`` () =
- let trivia =
- getDirectiveTrivia false """
-let v =
- #if FOO
- #if MEH
- 1
- #else
- 2
- #endif
- #else
- 3
- #endif
-"""
-
- match trivia with
- | [ ConditionalDirectiveTrivia.If(expr1, mIf1)
- ConditionalDirectiveTrivia.If(expr2, mIf2)
- ConditionalDirectiveTrivia.Else mElse1
- ConditionalDirectiveTrivia.EndIf mEndif1
- ConditionalDirectiveTrivia.Else mElse2
- ConditionalDirectiveTrivia.EndIf mEndif2 ] ->
- assertRange (3, 4) (3, 11) mIf1
- assertRange (4, 8) (4, 15) mIf2
- assertRange (6, 8) (6, 13) mElse1
- assertRange (8, 8) (8, 14) mEndif1
- assertRange (9, 4) (9, 9) mElse2
- assertRange (11, 4) (11, 10) mEndif2
-
- match expr1 with
- | IfDirectiveExpression.Ident "FOO" -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr1}"
-
- match expr2 with
- | IfDirectiveExpression.Ident "MEH" -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr2}"
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``nested #if / #endif with complex expressions`` () =
- let trivia =
- getDirectiveTrivia false """
-let v =
- #if !DEBUG
- #if FOO && BAR
- #if MEH || HMM
- printfn "oh some logging"
- #endif
- #endif
- #endif
-"""
-
- match trivia with
- | [ ConditionalDirectiveTrivia.If(expr1, mIf1)
- ConditionalDirectiveTrivia.If(expr2, mIf2)
- ConditionalDirectiveTrivia.If(expr3, mIf3)
- ConditionalDirectiveTrivia.EndIf mEndif1
- ConditionalDirectiveTrivia.EndIf mEndif2
- ConditionalDirectiveTrivia.EndIf mEndif3 ] ->
- assertRange (3, 4) (3, 14) mIf1
- assertRange (4, 8) (4, 22) mIf2
- assertRange (5, 12) (5, 26) mIf3
- assertRange (7, 12) (7, 18) mEndif1
- assertRange (8, 8) (8, 14) mEndif2
- assertRange (9, 4) (9, 10) mEndif3
-
- match expr1 with
- | IfDirectiveExpression.Not (IfDirectiveExpression.Ident "DEBUG") -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr1}"
-
- match expr2 with
- | IfDirectiveExpression.And(IfDirectiveExpression.Ident "FOO", IfDirectiveExpression.Ident "BAR") -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr2}"
-
- match expr3 with
- | IfDirectiveExpression.Or(IfDirectiveExpression.Ident "MEH", IfDirectiveExpression.Ident "HMM") -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr3}"
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``directives in multiline comment are not reported as trivia`` () =
- let trivia =
- getDirectiveTrivia false """
-let v =
-(*
-#if DEBUG
-()
-#endif
-*)
-42
-"""
-
- match trivia with
- | [] -> Assert.Pass()
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``directives in multiline string are not reported as trivia`` () =
- let trivia =
- getDirectiveTrivia false "
-let v = \"\"\"
-#if DEBUG
-()
-#endif
-42
-\"\"\"
-"
-
- match trivia with
- | [] -> Assert.Pass()
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``single #if / #endif, signature file`` () =
- let trivia =
- getDirectiveTrivia true """
-namespace Foobar
-
-val v: int =
- #if DEBUG
- 1
- #endif
- 42
-"""
-
- match trivia with
- | [ ConditionalDirectiveTrivia.If(expr, mIf)
- ConditionalDirectiveTrivia.EndIf mEndif ] ->
- assertRange (5, 4) (5, 13) mIf
- assertRange (7, 4) (7, 10) mEndif
-
- match expr with
- | IfDirectiveExpression.Ident "DEBUG" -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr}"
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``single #if / #else / #endif, signature file`` () =
- let trivia =
- getDirectiveTrivia true """
-namespace Foobar
-
-val v : int =
- #if DEBUG
- 30
- #else
- 42
- #endif
-"""
-
- match trivia with
- | [ ConditionalDirectiveTrivia.If(expr, mIf)
- ConditionalDirectiveTrivia.Else mElse
- ConditionalDirectiveTrivia.EndIf mEndif ] ->
- assertRange (5, 4) (5, 13) mIf
- assertRange (7, 4) (7, 9) mElse
- assertRange (9, 4) (9, 10) mEndif
-
- match expr with
- | IfDirectiveExpression.Ident "DEBUG" -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr}"
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``nested #if / #else / #endif, signature file`` () =
- let trivia =
- getDirectiveTrivia true """
-namespace Foobar
-
-val v : int =
- #if FOO
- #if MEH
- 1
- #else
- 2
- #endif
- #else
- 3
- #endif
-"""
-
- match trivia with
- | [ ConditionalDirectiveTrivia.If(expr1, mIf1)
- ConditionalDirectiveTrivia.If(expr2, mIf2)
- ConditionalDirectiveTrivia.Else mElse1
- ConditionalDirectiveTrivia.EndIf mEndif1
- ConditionalDirectiveTrivia.Else mElse2
- ConditionalDirectiveTrivia.EndIf mEndif2 ] ->
- assertRange (5, 4) (5, 11) mIf1
- assertRange (6, 8) (6, 15) mIf2
- assertRange (8, 8) (8, 13) mElse1
- assertRange (10, 8) (10, 14) mEndif1
- assertRange (11, 4) (11, 9) mElse2
- assertRange (13, 4) (13, 10) mEndif2
-
- match expr1 with
- | IfDirectiveExpression.Ident "FOO" -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr1}"
-
- match expr2 with
- | IfDirectiveExpression.Ident "MEH" -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr2}"
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``nested #if / #endif with complex expressions, signature file`` () =
- let trivia =
- getDirectiveTrivia true """
-namespace Foobar
-
-val v : int =
- #if !DEBUG
- #if FOO && BAR
- #if MEH || HMM
- 9
- #endif
- #endif
- #endif
- 10
-"""
-
- match trivia with
- | [ ConditionalDirectiveTrivia.If(expr1, mIf1)
- ConditionalDirectiveTrivia.If(expr2, mIf2)
- ConditionalDirectiveTrivia.If(expr3, mIf3)
- ConditionalDirectiveTrivia.EndIf mEndif1
- ConditionalDirectiveTrivia.EndIf mEndif2
- ConditionalDirectiveTrivia.EndIf mEndif3 ] ->
- assertRange (5, 4) (5, 14) mIf1
- assertRange (6, 8) (6, 22) mIf2
- assertRange (7, 12) (7, 26) mIf3
- assertRange (9, 12) (9, 18) mEndif1
- assertRange (10, 8) (10, 14) mEndif2
- assertRange (11, 4) (11, 10) mEndif3
-
- match expr1 with
- | IfDirectiveExpression.Not (IfDirectiveExpression.Ident "DEBUG") -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr1}"
-
- match expr2 with
- | IfDirectiveExpression.And(IfDirectiveExpression.Ident "FOO", IfDirectiveExpression.Ident "BAR") -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr2}"
-
- match expr3 with
- | IfDirectiveExpression.Or(IfDirectiveExpression.Ident "MEH", IfDirectiveExpression.Ident "HMM") -> ()
- | _ -> Assert.Fail $"Expected different expression, got {expr3}"
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``directives in multiline comment are not reported as trivia, signature file`` () =
- let trivia =
- getDirectiveTrivia true """
-namespace Foobar
-
-val v : int =
-(*
-#if DEBUG
-()
-#endif
-*)
-42
-"""
-
- match trivia with
- | [] -> Assert.Pass()
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
-
-[]
-let ``directives in multiline string are not reported as trivia, signature file`` () =
- let trivia =
- getDirectiveTrivia true "
-namespace Foobar
-
-let v : string = \"\"\"
-#if DEBUG
-()
-#endif
-42
-\"\"\"
-"
-
- match trivia with
- | [] -> Assert.Pass()
- | _ ->
- Assert.Fail $"Unexpected trivia, got {trivia}"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/EnumCaseTests.fs b/tests/service/SyntaxTreeTests/EnumCaseTests.fs
deleted file mode 100644
index 1363ab095ac..00000000000
--- a/tests/service/SyntaxTreeTests/EnumCaseTests.fs
+++ /dev/null
@@ -1,75 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.EnumCaseTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``single SynEnumCase has bar range`` () =
- let ast = """
-type Foo = | Bar = 1
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types ([
- SynTypeDefn.SynTypeDefn (typeRepr = SynTypeDefnRepr.Simple (simpleRepr = SynTypeDefnSimpleRepr.Enum(cases = [
- SynEnumCase.SynEnumCase (trivia = { BarRange = Some mBar; EqualsRange = mEquals })
- ])))
- ], _)
- ])
- ])) ->
- assertRange (2, 11) (2, 12) mBar
- assertRange (2, 17) (2, 18) mEquals
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``multiple SynEnumCases have bar range`` () =
- let ast = """
-type Foo =
- | Bar = 1
- | Bear = 2
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types ([
- SynTypeDefn.SynTypeDefn (typeRepr = SynTypeDefnRepr.Simple (simpleRepr = SynTypeDefnSimpleRepr.Enum(cases = [
- SynEnumCase.SynEnumCase (trivia = { BarRange = Some mBar1; EqualsRange = mEquals1 })
- SynEnumCase.SynEnumCase (trivia = { BarRange = Some mBar2; EqualsRange = mEquals2 })
- ])))
- ], _)
- ])
- ])) ->
- assertRange (3, 4) (3, 5) mBar1
- assertRange (3, 10) (3, 11) mEquals1
- assertRange (4, 4) (4, 5) mBar2
- assertRange (4, 11) (4, 12) mEquals2
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``single SynEnumCase without bar`` () =
- let ast = """
-type Foo = Bar = 1
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types ([
- SynTypeDefn.SynTypeDefn (typeRepr = SynTypeDefnRepr.Simple (simpleRepr = SynTypeDefnSimpleRepr.Enum(cases = [
- SynEnumCase.SynEnumCase (trivia = { BarRange = None; EqualsRange = mEquals })
- ])))
- ], _)
- ])
- ])) ->
- assertRange (2, 15) (2, 16) mEquals
- | _ ->
- Assert.Fail "Could not get valid AST"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/ExceptionTests.fs b/tests/service/SyntaxTreeTests/ExceptionTests.fs
deleted file mode 100644
index a712eba5e6f..00000000000
--- a/tests/service/SyntaxTreeTests/ExceptionTests.fs
+++ /dev/null
@@ -1,25 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.ExceptionTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``SynExceptionDefn should contains the range of the with keyword`` () =
- let parseResults =
- getParseResults
- """
-namespace X
-
-exception Foo with
- member Meh () = ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace(decls = [
- SynModuleDecl.Exception(
- exnDefn=SynExceptionDefn(withKeyword = Some mWithKeyword)
- )
- ]) ])) ->
- assertRange (4, 14) (4, 18) mWithKeyword
- | _ -> Assert.Fail "Could not get valid AST"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/ExpressionTests.fs b/tests/service/SyntaxTreeTests/ExpressionTests.fs
deleted file mode 100644
index 83fffdef005..00000000000
--- a/tests/service/SyntaxTreeTests/ExpressionTests.fs
+++ /dev/null
@@ -1,518 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.ExpressionTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``SynExpr.Do contains the range of the do keyword`` () =
- let ast = """let a =
- do
- foobar
- do!
- foobarBang
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(expr = SynExpr.Sequential(expr1 = SynExpr.Do(_, doRange) ; expr2 = SynExpr.DoBang(_, doBangRange)))
- ])
- ])
- ])) ->
- assertRange (2, 4) (3, 14) doRange
- assertRange (4, 4) (5, 18) doBangRange
- | _ ->
- Assert.Fail "Could not find SynExpr.Do"
-
-[]
-let ``SynExpr.LetOrUseBang contains the range of the equals sign`` () =
- let ast =
- """
-comp {
- let! x = y
- and! z = someFunction ()
- return ()
-}
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.App(argExpr =
- SynExpr.ComputationExpr(expr =
- SynExpr.LetOrUseBang(trivia = { EqualsRange = Some mLetBangEquals }
- andBangs = [ SynExprAndBang(trivia= { EqualsRange = mAndBangEquals }) ]))))
- ])
- ])) ->
- assertRange (3, 11) (3, 12) mLetBangEquals
- assertRange (4, 11) (4, 12) mAndBangEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.Record contains the range of the equals sign in SynExprRecordField`` () =
- let ast =
- """
-{ V = v
- X = // some comment
- someLongFunctionCall
- a
- b
- c }
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Record(recordFields = [
- SynExprRecordField(equalsRange = Some mEqualsV)
- SynExprRecordField(equalsRange = Some mEqualsX)
- ]))
- ])
- ])) ->
- assertRange (2, 4) (2, 5) mEqualsV
- assertRange (3, 9) (3, 10) mEqualsX
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``inherit SynExpr.Record contains the range of the equals sign in SynExprRecordField`` () =
- let ast =
- """
-{ inherit Exception(msg); X = 1; }
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Record(baseInfo = Some _ ; recordFields = [
- SynExprRecordField(equalsRange = Some mEquals)
- ]))
- ])
- ])) ->
- assertRange (2, 28) (2, 29) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``copy SynExpr.Record contains the range of the equals sign in SynExprRecordField`` () =
- let ast =
- """
-{ foo with
- X
- =
- 12 }
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Record(copyInfo = Some _ ; recordFields = [
- SynExprRecordField(equalsRange = Some mEquals)
- ]))
- ])
- ])) ->
- assertRange (4, 12) (4, 13) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.AnonRecord contains the range of the equals sign in the fields`` () =
- let ast =
- """
-{| X = 5
- Y = 6
- Z = 7 |}
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.AnonRecd(recordFields = [
- (_, Some mEqualsX, _)
- (_, Some mEqualsY, _)
- (_, Some mEqualsZ, _)
- ]))
- ])
- ])) ->
- assertRange (2, 5) (2, 6) mEqualsX
- assertRange (3, 8) (3, 9) mEqualsY
- assertRange (4, 12) (4, 13) mEqualsZ
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.For contains the range of the equals sign`` () =
- let ast =
- """
-for i = 1 to 10 do
-printf "%d " i
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.For(equalsRange = Some mEquals))
- ])
- ])) ->
- assertRange (2, 6) (2, 7) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.TryWith contains the range of the try and with keyword`` () =
- let ast =
- """
-try
-x
-with
-| ex -> y
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.TryWith(trivia={ TryKeyword = mTry; WithKeyword = mWith }))
- ])
- ])) ->
- assertRange (2, 0) (2, 3) mTry
- assertRange (4, 0) (4, 4) mWith
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.TryFinally contains the range of the try and with keyword`` () =
- let ast =
- """
-try
-x
-finally
-()
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.TryFinally(trivia={ TryKeyword = mTry; FinallyKeyword = mFinally }))
- ])
- ])) ->
- assertRange (2, 0) (2, 3) mTry
- assertRange (4, 0) (4, 7) mFinally
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.Match contains the range of the match and with keyword`` () =
- let ast =
- """
-match x with
-| y -> z
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Match(trivia = { MatchKeyword = mMatch; WithKeyword = mWith }))
- ])
- ])) ->
- assertRange (2, 0) (2, 5) mMatch
- assertRange (2, 8) (2, 12) mWith
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.MatchBang contains the range of the match and with keyword`` () =
- let ast =
- """
-match! x with
-| y -> z
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.MatchBang(trivia = { MatchBangKeyword = mMatch; WithKeyword = mWith }))
- ])
- ])) ->
- assertRange (2, 0) (2, 6) mMatch
- assertRange (2, 9) (2, 13) mWith
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.ObjExpr contains the range of with keyword`` () =
- let ast =
- """
-{ new obj() with
- member x.ToString() = "INotifyEnumerableInternal"
- interface INotifyEnumerableInternal<'T>
- interface IEnumerable<_> with
- member x.GetEnumerator() = null }
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.ObjExpr(withKeyword=Some mWithObjExpr; extraImpls=[ SynInterfaceImpl(withKeyword=None); SynInterfaceImpl(withKeyword=Some mWithSynInterfaceImpl) ]))
- ])
- ])) ->
- assertRange (2, 12) (2, 16) mWithObjExpr
- assertRange (5, 27) (5, 31) mWithSynInterfaceImpl
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.LetOrUse contains the range of in keyword`` () =
- let ast =
- getParseResults "let x = 1 in ()"
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.LetOrUse(trivia={ InKeyword = Some mIn }))
- ])
- ])) ->
- assertRange (1, 10) (1, 12) mIn
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.LetOrUse with recursive binding contains the range of in keyword`` () =
- let ast =
- getParseResults """
-do
- let rec f = ()
- and g = () in
- ()
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Do(expr = SynExpr.LetOrUse(bindings=[_;_]; trivia={ InKeyword = Some mIn })))
- ])
- ])) ->
- assertRange (4, 15) (4, 17) mIn
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``nested SynExpr.LetOrUse contains the range of in keyword`` () =
- let ast =
- getParseResults """
-let f () =
- let x = 1 in // the "in" keyword is available in F#
- let y = 2 in
- x + y
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(expr =
- SynExpr.LetOrUse(bindings=[_]; trivia={ InKeyword = Some mIn }; body=SynExpr.LetOrUse(trivia={ InKeyword = Some mInnerIn })))
- ])
- ])
- ])) ->
- assertRange (3, 14) (3, 16) mIn
- assertRange (4, 14) (4, 16) mInnerIn
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.LetOrUse does not contain the range of in keyword`` () =
- let ast =
- getParseResults """
-do
-let x = 1
-()
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Do(expr = SynExpr.LetOrUse(trivia={ InKeyword = None })))
- ])
- ])) ->
- Assert.Pass()
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.LetOrUse where body expr starts with token of two characters does not contain the range of in keyword`` () =
- let ast =
- getParseResults """
-do
-let e1 = e :?> Collections.DictionaryEntry
-e1.Key, e1.Value
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Do(expr = SynExpr.LetOrUse(trivia={ InKeyword = None })))
- ])
- ])) ->
- Assert.Pass()
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``global keyword as SynExpr`` () =
- let ast =
- getParseResults """
-global
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.LongIdent(longDotId = SynLongIdent([mangledGlobal], [], [Some (IdentTrivia.OriginalNotation "global")]))
- )])
- ])) ->
- Assert.AreEqual("`global`", mangledGlobal.idText)
- Assert.Pass()
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExprRecordFields contain correct amount of trivia`` () =
- let ast =
- getParseResults """
- { JobType = EsriBoundaryImport
- FileToImport = filePath
- State = state
- DryRun = args.DryRun }
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Record(recordFields = [
- SynExprRecordField(fieldName = (synLongIdent, _))
- _; _; _
- ]))
- ])
- ])) ->
- match synLongIdent.IdentsWithTrivia with
- | [ _ ] -> Assert.Pass()
- | idents -> Assert.Fail $"Expected a single SynIdent, got {idents}"
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``SynExpr.Dynamic does contain ident`` () =
- let ast =
- getParseResults "x?k"
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.Dynamic (_, _, SynExpr.Ident(idK) ,mDynamicExpr))
- ])
- ])) ->
- Assert.AreEqual("k", idK.idText)
- assertRange (1,0) (1, 3) mDynamicExpr
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``SynExpr.Dynamic does contain parentheses`` () =
- let ast =
- getParseResults "x?(g)"
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Dynamic (_, _, SynExpr.Paren(SynExpr.Ident(idG), lpr, Some rpr, mParen) ,mDynamicExpr))
- ])
- ])) ->
- Assert.AreEqual("g", idG.idText)
- assertRange (1, 2) (1,3) lpr
- assertRange (1, 4) (1,5) rpr
- assertRange (1, 2) (1,5) mParen
- assertRange (1,0) (1, 5) mDynamicExpr
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``SynExpr.Set with SynExpr.Dynamic`` () =
- let ast =
- getParseResults "x?v <- 2"
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.Set(
- SynExpr.Dynamic (_, _, SynExpr.Ident(idV) ,mDynamicExpr),
- SynExpr.Const _,
- mSetExpr
- ))
- ])
- ])) ->
- Assert.AreEqual("v", idV.idText)
- assertRange (1,0) (1, 3) mDynamicExpr
- assertRange (1,0) (1, 8) mSetExpr
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``SynExpr.Obj with setter`` () =
- let ast =
- getParseResults """
-[]
-type CFoo() =
- abstract AbstractClassPropertySet: string with set
-
-{ new CFoo() with
- override this.AbstractClassPropertySet with set (v:string) = () }
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types _
- SynModuleDecl.Expr(expr = SynExpr.ObjExpr(members = [
- SynMemberDefn.GetSetMember(None, Some _, m, { WithKeyword = mWith; SetKeyword = Some mSet })
- ]))
- ])
- ])) ->
- assertRange (7, 43) (7, 47) mWith
- assertRange (7, 48) (7, 51) mSet
- assertRange (7,4) (7, 67) m
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``SynExpr.AnonRecd with struct keyword`` () =
- let ast =
- getParseResults """
-struct
- {| Foo =
- // meh
- someValue |}
-
-struct {| |}
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.AnonRecd(range = m1))
- SynModuleDecl.Expr(expr = SynExpr.AnonRecd(range = m2))
- ])
- ])) ->
- assertRange (2,0) (5, 16) m1
- assertRange (7, 0) (7, 12) m2
- | _ -> Assert.Fail $"Could not get valid AST, got {ast}"
diff --git a/tests/service/SyntaxTreeTests/ExternTests.fs b/tests/service/SyntaxTreeTests/ExternTests.fs
deleted file mode 100644
index 43ea6e5435a..00000000000
--- a/tests/service/SyntaxTreeTests/ExternTests.fs
+++ /dev/null
@@ -1,21 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.ExternTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``extern keyword is present in trivia`` () =
- let parseResults = getParseResults "extern void GetProcessHeap()"
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Extern mExtern })
- ])
- ])
- ])) ->
- assertRange (1, 0) (1, 6) mExtern
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
diff --git a/tests/service/SyntaxTreeTests/IfThenElseTests.fs b/tests/service/SyntaxTreeTests/IfThenElseTests.fs
deleted file mode 100644
index 66cf9a82849..00000000000
--- a/tests/service/SyntaxTreeTests/IfThenElseTests.fs
+++ /dev/null
@@ -1,177 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.IfThenElseTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``If keyword in IfThenElse`` () =
- let parseResults =
- getParseResults
- "if a then b"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.IfThenElse(trivia={ IfKeyword = mIfKw; IsElif = false; ThenKeyword = mThenKw; ElseKeyword = None })
- )
- ]) ])) ->
- assertRange (1, 0) (1, 2) mIfKw
- assertRange (1, 5) (1, 9) mThenKw
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Else keyword in simple IfThenElse`` () =
- let parseResults =
- getParseResults
- "if a then b else c"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr =SynExpr.IfThenElse(trivia={ IfKeyword = mIfKw; IsElif = false; ThenKeyword = mThenKw; ElseKeyword = Some mElse })
- )
- ]) ])) ->
- assertRange (1, 0) (1, 2) mIfKw
- assertRange (1, 5) (1, 9) mThenKw
- assertRange (1, 12) (1, 16) mElse
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``If, Then and Else keyword on separate lines`` () =
- let parseResults =
- getParseResults
- """
-if a
-then b
-else c"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.IfThenElse(trivia={ IfKeyword = mIfKw; IsElif = false; ThenKeyword = mThenKw; ElseKeyword = Some mElse })
- )
- ]) ])) ->
- assertRange (2, 0) (2, 2) mIfKw
- assertRange (3, 0) (3, 4) mThenKw
- assertRange (4, 0) (4, 4) mElse
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Nested elif in IfThenElse`` () =
- let parseResults =
- getParseResults
- """
-if a then
-b
-elif c then d"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.IfThenElse(trivia={ IfKeyword = mIfKw; IsElif=false; ThenKeyword = mThenKw; ElseKeyword = None }
- elseExpr = Some (SynExpr.IfThenElse(trivia={ IfKeyword = mElif; IsElif = true })))
- )
- ]) ])) ->
- assertRange (2, 0) (2, 2) mIfKw
- assertRange (2, 5) (2, 9) mThenKw
- assertRange (4, 0) (4, 4) mElif
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Nested else if in IfThenElse`` () =
- let parseResults =
- getParseResults
- """
-if a then
- b
-else
- if c then d"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.IfThenElse(trivia={ IfKeyword = mIfKw; IsElif = false; ThenKeyword = mThenKw; ElseKeyword = Some mElse }
- elseExpr = Some (SynExpr.IfThenElse(trivia={ IfKeyword = mElseIf; IsElif = false })))
- )
- ]) ])) ->
- assertRange (2, 0) (2, 2) mIfKw
- assertRange (2, 5) (2, 9) mThenKw
- assertRange (4, 0) (4, 4) mElse
- assertRange (5, 4) (5, 6) mElseIf
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Nested else if on the same line in IfThenElse`` () =
- let parseResults =
- getParseResults
- """
-if a then
-b
-else if c then
-d"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.IfThenElse(trivia={ IfKeyword = mIfKw; IsElif=false; ThenKeyword = mThenKw; ElseKeyword = Some mElse }
- elseExpr = Some (SynExpr.IfThenElse(trivia={ IfKeyword = mElseIf; IsElif = false })))
- )
- ]) ])) ->
- assertRange (2, 0) (2, 2) mIfKw
- assertRange (2, 5) (2, 9) mThenKw
- assertRange (4, 0) (4, 4) mElse
- assertRange (4, 5) (4, 7) mElseIf
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Deeply nested IfThenElse`` () =
- let parseResults =
- getParseResults
- """
-if a then
- b
-elif c then
- d
-else
- if e then
- f
- else
- g"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.IfThenElse(trivia={ IfKeyword = mIf1; IsElif = false; ElseKeyword = None }
- elseExpr = Some (SynExpr.IfThenElse(trivia={ IfKeyword = mElif; IsElif = true; ElseKeyword = Some mElse1 }
- elseExpr = Some (SynExpr.IfThenElse(trivia={ IfKeyword = mIf2; IsElif = false; ElseKeyword = Some mElse2 }))))))
- ]) ])) ->
- assertRange (2, 0) (2, 2) mIf1
- assertRange (4, 0) (4, 4) mElif
- assertRange (6, 0) (6, 4) mElse1
- assertRange (7, 8) (7, 10) mIf2
- assertRange (9, 8) (9, 12) mElse2
-
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Comment between else and if`` () =
- let parseResults =
- getParseResults
- """
-if a then
-b
-else (* some long comment here *) if c then
-d"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.IfThenElse(trivia={ IfKeyword = mIf1; IsElif = false; ElseKeyword = Some mElse }
- elseExpr = Some (SynExpr.IfThenElse(trivia = { IfKeyword = mIf2; IsElif = false }))))
- ]) ])) ->
- assertRange (2, 0) (2, 2) mIf1
- assertRange (4, 0) (4, 4) mElse
- assertRange (4, 34) (4, 36) mIf2
-
- | _ -> Assert.Fail "Could not get valid AST"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/LambdaTests.fs b/tests/service/SyntaxTreeTests/LambdaTests.fs
deleted file mode 100644
index ebc343507ab..00000000000
--- a/tests/service/SyntaxTreeTests/LambdaTests.fs
+++ /dev/null
@@ -1,146 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.LambdaTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``Lambda with two parameters gives correct body`` () =
- let parseResults =
- getParseResults
- "fun a b -> x"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(parsedData = Some([SynPat.Named _; SynPat.Named _], SynExpr.Ident ident))
- )
- ]) ])) ->
- Assert.AreEqual("x", ident.idText)
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Lambda with wild card parameter gives correct body`` () =
- let parseResults =
- getParseResults
- "fun a _ b -> x"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(parsedData = Some([SynPat.Named _; SynPat.Wild _; SynPat.Named _], SynExpr.Ident ident))
- )
- ]) ])) ->
- Assert.AreEqual("x", ident.idText)
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Lambda with tuple parameter with wild card gives correct body`` () =
- let parseResults =
- getParseResults
- "fun a (b, _) c -> x"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(parsedData = Some([SynPat.Named _; SynPat.Paren(SynPat.Tuple _,_); SynPat.Named _], SynExpr.Ident ident))
- )
- ]) ])) ->
- Assert.AreEqual("x", ident.idText)
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Lambda with wild card that returns a lambda gives correct body`` () =
- let parseResults =
- getParseResults
- "fun _ -> fun _ -> x"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(parsedData = Some([SynPat.Wild _], SynExpr.Lambda(parsedData = Some([SynPat.Wild _], SynExpr.Ident ident))))
- )
- ]) ])) ->
- Assert.AreEqual("x", ident.idText)
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Simple lambda has arrow range`` () =
- let parseResults =
- getParseResults
- "fun x -> x"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(trivia={ ArrowRange = Some mArrow })
- )
- ]) ])) ->
- assertRange (1, 6) (1, 8) mArrow
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Multiline lambda has arrow range`` () =
- let parseResults =
- getParseResults
- "fun x y z
- ->
- x * y * z"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(trivia={ ArrowRange = Some mArrow })
- )
- ]) ])) ->
- assertRange (2, 28) (2, 30) mArrow
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Destructed lambda has arrow range`` () =
- let parseResults =
- getParseResults
- "fun { X = x } -> x * 2"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(trivia={ ArrowRange = Some mArrow })
- )
- ]) ])) ->
- assertRange (1, 14) (1, 16) mArrow
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Tuple in lambda has arrow range`` () =
- let parseResults =
- getParseResults
- "fun (x, _) -> x * 3"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(trivia={ ArrowRange = Some mArrow })
- )
- ]) ])) ->
- assertRange (1, 11) (1, 13) mArrow
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Complex arguments lambda has arrow range`` () =
- let parseResults =
- getParseResults
- "fun (x, _)
- ({ Y = h::_ })
- (SomePattern(z))
- ->
- x * y + z"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Lambda(trivia={ ArrowRange = Some mArrow })
- )
- ]) ])) ->
- assertRange (4, 4) (4, 6) mArrow
- | _ -> Assert.Fail "Could not get valid AST"
diff --git a/tests/service/SyntaxTreeTests/LeadingKeywordTests.fs b/tests/service/SyntaxTreeTests/LeadingKeywordTests.fs
deleted file mode 100644
index c247376436b..00000000000
--- a/tests/service/SyntaxTreeTests/LeadingKeywordTests.fs
+++ /dev/null
@@ -1,561 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.LeadingKeywordTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``let keyword`` () =
- let parseResults = getParseResults "let a b = b + 1"
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Let mLet })
- ])
- ])
- ])) ->
- assertRange (1, 0) (1, 3) mLet
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``let rec keyword`` () =
- let parseResults = getParseResults "let rec a b = b + 1"
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.LetRec(mLet, mRec) })
- ])
- ])
- ])) ->
- assertRange (1, 0) (1, 3) mLet
- assertRange (1, 4) (1, 7) mRec
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``and keyword`` () =
- let parseResults =
- getParseResults """
-let rec a b = b + 1
-and d e = e + 1
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding _
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.And mAnd })
- ])
- ])
- ])) ->
- assertRange (3, 0) (3, 3) mAnd
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``use keyword`` () =
- let parseResults =
- getParseResults """
-do
- use x = X()
- ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Do(expr =
- SynExpr.LetOrUse(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Use mUse })
- ])
- )
- )
- ])
- ])) ->
- assertRange (3, 4) (3, 7) mUse
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``use rec keyword`` () =
- let parseResults =
- getParseResults """
-do
- use rec x = X()
- ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.Do(expr =
- SynExpr.LetOrUse(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.UseRec(mUse, mRec) })
- ])
- )
- )
- ])
- ])) ->
- assertRange (3, 4) (3, 7) mUse
- assertRange (3, 8) (3, 11) mRec
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``extern keyword`` () =
- let parseResults = getParseResults "extern void Meh()"
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Extern mExtern })
- ])
- ])
- ])) ->
- assertRange (1, 0) (1, 6) mExtern
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``member keyword`` () =
- let parseResults = getParseResults """
-type X =
- member this.Y () = ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.Member(memberDefn = SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Member mMember }))
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mMember
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``member val keyword`` () =
- let parseResults = getParseResults """
-type X =
- member val Y : int = 1
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.AutoProperty(trivia = { LeadingKeyword = SynLeadingKeyword.MemberVal(mMember, mVal) })
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mMember
- assertRange (3, 11) (3, 14) mVal
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``override keyword`` () =
- let parseResults = getParseResults """
-type D =
- override E : string = ""
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.Member(memberDefn = SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Override(mOverride) }))
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 12) mOverride
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``override val keyword`` () =
- let parseResults = getParseResults """
-type X =
- override val Y : int = 1
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.AutoProperty(trivia = { LeadingKeyword = SynLeadingKeyword.OverrideVal(mOverride, mVal) })
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 12) mOverride
- assertRange (3, 13) (3, 16) mVal
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``abstract keyword`` () =
- let parseResults = getParseResults """
-type X =
- abstract Y : int
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.AbstractSlot(slotSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.Abstract mAbstract }))
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 12) mAbstract
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``abstract member keyword`` () =
- let parseResults = getParseResults """
-type X =
- abstract member Y : int
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.AbstractSlot(slotSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.AbstractMember(mAbstract, mMember) }))
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 12) mAbstract
- assertRange (3, 13) (3, 19) mMember
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``static member keyword`` () =
- let parseResults = getParseResults """
-type X =
- static member Y : int = 1
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.Member(memberDefn = SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.StaticMember(mStatic, mMember) }))
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic
- assertRange (3, 11) (3, 17) mMember
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``static member val keyword`` () =
- let parseResults = getParseResults """
-type X =
- static member val Y : int = 1
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.AutoProperty(trivia = { LeadingKeyword = SynLeadingKeyword.StaticMemberVal(mStatic, mMember, mVal) })
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic
- assertRange (3, 11) (3, 17) mMember
- assertRange (3, 18) (3, 21) mVal
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``static abstract keyword`` () =
- let parseResults = getParseResults """
-type X =
- static abstract Y : int -> int
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.AbstractSlot(slotSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.StaticAbstract(mStatic, mAbstract) }))
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic
- assertRange (3, 11) (3, 19) mAbstract
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``static abstract member keyword`` () =
- let parseResults = getParseResults """
-type X =
- static abstract member Y : int -> int
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.AbstractSlot(slotSig = SynValSig(trivia = {
- LeadingKeyword = SynLeadingKeyword.StaticAbstractMember(mStatic, mAbstract, mMember)
- }))
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic
- assertRange (3, 11) (3, 19) mAbstract
- assertRange (3,20) (3, 26) mMember
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``static val keyword`` () =
- let parseResults = getParseResultsOfSignatureFile """
-namespace Meh
-
-type X =
- static val Y : int -> int
-"""
-
- match parseResults with
- | ParsedInput.SigFile(ParsedSigFileInput(contents = [
- SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Types(types = [
- SynTypeDefnSig(typeRepr = SynTypeDefnSigRepr.ObjectModel(memberSigs = [
- SynMemberSig.ValField(field =
- SynField(trivia = { LeadingKeyword = Some (SynLeadingKeyword.StaticVal(mStatic, mVal)) }))
- ]))
- ])
- ])
- ])) ->
- assertRange (5, 4) (5, 10) mStatic
- assertRange (5, 11) (5, 14) mVal
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``default keyword`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace X
-
-type Y =
- default F : int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [ SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Types(types =[
- SynTypeDefnSig(typeRepr=SynTypeDefnSigRepr.ObjectModel(memberSigs=[
- SynMemberSig.Member(memberSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.Default mDefault }))
- ]))
- ])
- ]) ])) ->
- assertRange (5, 4) (5, 11) mDefault
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``default val keyword`` () =
- let ast = """
-type Foo =
- default val A : int = 1
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types ([
- SynTypeDefn.SynTypeDefn (typeRepr = SynTypeDefnRepr.ObjectModel (members=[
- SynMemberDefn.AutoProperty(trivia = { LeadingKeyword = SynLeadingKeyword.DefaultVal(mDefault , mVal) })
- ]))
- ], _)
- ])
- ])) ->
- assertRange (3, 4) (3, 11) mDefault
- assertRange (3, 12) (3, 15) mVal
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``val keyword`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace X
-
-type Y =
- val F : int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [ SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Types(types =[
- SynTypeDefnSig(typeRepr=SynTypeDefnSigRepr.ObjectModel(memberSigs=[
- SynMemberSig.ValField(field = SynField(trivia = { LeadingKeyword = Some (SynLeadingKeyword.Val mVal) }))
- ]))
- ])
- ]) ])) ->
- assertRange (5, 4) (5, 7) mVal
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``new keyword`` () =
- let parseResults = getParseResults """
-type Y() =
- new (message:string) = Y()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.ImplicitCtor _
- SynMemberDefn.Member(memberDefn = SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.New mNew }))
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 7) mNew
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``synthetic keyword`` () =
- let parseResults =
- getParseResults """
-{ new ISomething with
- a = () }
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.ObjExpr(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Synthetic })
- ])
- )
- ])
- ])) ->
- Assert.Pass()
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let `` static let keyword`` () =
- let parseResults =
- getParseResults """
-type X =
- static let PI = 3.14
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.LetBindings(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.StaticLet(mStatic, mLet) })
- ])
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic
- assertRange (3, 11) (3, 14) mLet
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let `` static let rec keyword`` () =
- let parseResults =
- getParseResults """
-type X =
- static let rec forever () = forever()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.LetBindings(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.StaticLetRec(mStatic, mLet, mRec) })
- ])
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic
- assertRange (3, 11) (3, 14) mLet
- assertRange (3, 15) (3, 18) mRec
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let `` do keyword`` () =
- let parseResults =
- getParseResults """
-type X =
- do ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.LetBindings(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Do(mDo) })
- ])
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 6) mDo
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let `` do static keyword`` () =
- let parseResults =
- getParseResults """
-type X =
- static do ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.LetBindings(bindings = [
- SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.StaticDo(mStatic, mDo) })
- ])
- ]))
- ])
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic
- assertRange (3, 11) (3, 13) mDo
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
diff --git a/tests/service/SyntaxTreeTests/MatchClauseTests.fs b/tests/service/SyntaxTreeTests/MatchClauseTests.fs
deleted file mode 100644
index 5c68abb598a..00000000000
--- a/tests/service/SyntaxTreeTests/MatchClauseTests.fs
+++ /dev/null
@@ -1,231 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.MatchClauseTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``Range of single SynMatchClause`` () =
- let parseResults =
- getParseResults
- """
-try
- let content = tryDownloadFile url
- Some content
-with ex ->
- Infrastructure.ReportWarning ex
- None"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.TryWith(withCases = [ SynMatchClause(range = range) as clause ]))
- ]) ])) ->
- assertRange (5, 5) (7, 8) range
- assertRange (5, 5) (7, 8) clause.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of multiple SynMatchClause`` () =
- let parseResults =
- getParseResults
- """
-try
- let content = tryDownloadFile url
- Some content
-with
-| ex ->
- Infrastructure.ReportWarning ex
- None
-| exx ->
- None"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.TryWith(withCases = [ SynMatchClause(range = r1) as clause1
- SynMatchClause(range = r2) as clause2 ]))
- ]) ])) ->
- assertRange (6, 2) (8, 8) r1
- assertRange (6, 2) (8, 8) clause1.Range
-
- assertRange (9, 2) (10, 8) r2
- assertRange (9, 2) (10, 8) clause2.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of single SynMatchClause followed by bar`` () =
- let parseResults =
- getParseResults
- """
-try
- let content = tryDownloadFile url
- Some content
-with
-| ex ->
- ()
-| """
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.TryWith(withCases = [ SynMatchClause(range = range) as clause ]))
- ]) ])) ->
- assertRange (6, 2) (7, 6) range
- assertRange (6, 2) (7, 6) clause.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of single SynMatchClause with missing body`` () =
- let parseResults =
- getParseResults
- """
-try
- let content = tryDownloadFile url
- Some content
-with
-| ex ->"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.TryWith(withCases = [ SynMatchClause(range = range) as clause ]))
- ]) ])) ->
- assertRange (6, 2) (6, 4) range
- assertRange (6, 2) (6, 4) clause.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of single SynMatchClause with missing body and when expr`` () =
- let parseResults =
- getParseResults
- """
-try
- let content = tryDownloadFile url
- Some content
-with
-| ex when (isNull ex) ->"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.TryWith(withCases = [ SynMatchClause(range = range) as clause ]))
- ]) ])) ->
- assertRange (6, 2) (6, 21) range
- assertRange (6, 2) (6, 21) clause.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of arrow in SynMatchClause`` () =
- let parseResults =
- getParseResults
- """
-match foo with
-| Bar bar -> ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.Match(clauses = [ SynMatchClause(trivia={ ArrowRange = Some mArrow }) ]))
- ]) ])) ->
- assertRange (3, 10) (3, 12) mArrow
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of arrow in SynMatchClause with when clause`` () =
- let parseResults =
- getParseResults
- """
-match foo with
-| Bar bar when (someCheck bar) -> ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.Match(clauses = [ SynMatchClause(trivia={ ArrowRange = Some mArrow }) ]))
- ]) ])) ->
- assertRange (3, 31) (3, 33) mArrow
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of bar in a single SynMatchClause in SynExpr.Match`` () =
- let parseResults =
- getParseResults
- """
-match foo with
-| Bar bar when (someCheck bar) -> ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.Match(clauses = [ SynMatchClause(trivia={ BarRange = Some mBar }) ]))
- ]) ])) ->
- assertRange (3, 0) (3, 1) mBar
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of bar in multiple SynMatchClauses in SynExpr.Match`` () =
- let parseResults =
- getParseResults
- """
-match foo with
-| Bar bar when (someCheck bar) -> ()
-| Far too -> near ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.Match(clauses = [ SynMatchClause(trivia={ BarRange = Some mBar1 })
- SynMatchClause(trivia={ BarRange = Some mBar2 }) ]))
- ]) ])) ->
- assertRange (3, 0) (3, 1) mBar1
- assertRange (4, 0) (4, 1) mBar2
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of bar in a single SynMatchClause in SynExpr.TryWith`` () =
- let parseResults =
- getParseResults
- """
-try
- foo ()
-with
-| exn -> ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.TryWith(withCases = [ SynMatchClause(trivia={ BarRange = Some mBar }) ]))
- ]) ])) ->
- assertRange (5, 0) (5, 1) mBar
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``No range of bar in a single SynMatchClause in SynExpr.TryWith`` () =
- let parseResults =
- getParseResults
- """
-try
- foo ()
-with exn ->
- // some comment
- ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.TryWith(withCases = [ SynMatchClause(trivia={ BarRange = None }) ]))
- ]) ])) ->
- Assert.Pass()
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of bar in a multiple SynMatchClauses in SynExpr.TryWith`` () =
- let parseResults =
- getParseResults
- """
-try
- foo ()
-with
-| IOException as ioex ->
- // some comment
- ()
-| ex -> ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.TryWith(withCases = [ SynMatchClause(trivia={ BarRange = Some mBar1 })
- SynMatchClause(trivia={ BarRange = Some mBar2 }) ]))
- ]) ])) ->
- assertRange (5, 0) (5, 1) mBar1
- assertRange (8, 0) (8, 1) mBar2
- | _ -> Assert.Fail "Could not get valid AST"
diff --git a/tests/service/SyntaxTreeTests/MeasureTests.fs b/tests/service/SyntaxTreeTests/MeasureTests.fs
deleted file mode 100644
index f8c9f29271a..00000000000
--- a/tests/service/SyntaxTreeTests/MeasureTests.fs
+++ /dev/null
@@ -1,125 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.MeasureTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``Measure contains the range of the constant`` () =
- let parseResults =
- getParseResults
- """
-let n = 1.0m
-let m = 7.000
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [ SynBinding.SynBinding(expr = SynExpr.Const(SynConst.Measure(constantRange = r1), _)) ])
- SynModuleDecl.Let(bindings = [ SynBinding.SynBinding(expr = SynExpr.Const(SynConst.Measure(constantRange = r2), _)) ])
- ]) ])) ->
- assertRange (2, 8) (2, 12) r1
- assertRange (3, 8) (3, 13) r2
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynMeasure.Paren has correct range`` () =
- let parseResults =
- getParseResults
- """
-40u
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Const(SynConst.Measure(SynConst.UInt32 _, _, SynMeasure.Divide(
- SynMeasure.Seq([ SynMeasure.Named([ hrIdent ], _) ], _),
- SynMeasure.Seq([ SynMeasure.Paren(SynMeasure.Seq([
- SynMeasure.Named([ staffIdent ], _)
- SynMeasure.Named([ weeksIdent ], _)
- ], _) , mParen) ], _),
- _)
- ), _))
- ]) ])) ->
- Assert.AreEqual("hr", hrIdent.idText)
- Assert.AreEqual("staff", staffIdent.idText)
- Assert.AreEqual("weeks", weeksIdent.idText)
- assertRange (2, 9) (2, 22) mParen
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-let private (|TypeName|_|) t =
- match t with
- | SynType.LongIdent(SynLongIdent([ident], _, _)) -> Some ident.idText
- | _ -> None
-
-[]
-let ``SynType.Tuple in measure type with no slashes`` () =
- let parseResults =
- getParseResults
- """
-[] type X = Y * Z
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr =
- SynTypeDefnRepr.Simple(simpleRepr =
- SynTypeDefnSimpleRepr.TypeAbbrev(rhsType =
- SynType.Tuple(false, [ SynTupleTypeSegment.Type (TypeName "Y")
- SynTupleTypeSegment.Star mStar
- SynTupleTypeSegment.Type (TypeName "Z") ], mTuple))))
- ])
- ]) ])) ->
- assertRange (2, 23) (2, 24) mStar
- assertRange (2, 21) (2, 26) mTuple
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``SynType.Tuple in measure type with leading slash`` () =
- let parseResults =
- getParseResults
- """
-[] type X = / second
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr =
- SynTypeDefnRepr.Simple(simpleRepr =
- SynTypeDefnSimpleRepr.TypeAbbrev(rhsType =
- SynType.Tuple(false, [ SynTupleTypeSegment.Slash mSlash
- SynTupleTypeSegment.Type (TypeName "second") ], mTuple))))
- ])
- ]) ])) ->
- assertRange (2, 21) (2, 22) mSlash
- assertRange (2, 21) (2, 29) mTuple
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``SynType.Tuple in measure type with start and slash`` () =
- let parseResults =
- getParseResults
- """
-[] type R = X * Y / Z
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr =
- SynTypeDefnRepr.Simple(simpleRepr =
- SynTypeDefnSimpleRepr.TypeAbbrev(rhsType =
- SynType.Tuple(false, [ SynTupleTypeSegment.Type (TypeName "X")
- SynTupleTypeSegment.Star msStar
- SynTupleTypeSegment.Type (TypeName "Y")
- SynTupleTypeSegment.Slash msSlash
- SynTupleTypeSegment.Type (TypeName "Z") ], mTuple))))
- ])
- ]) ])) ->
- assertRange (2, 23) (2, 24) msStar
- assertRange (2, 21) (2, 30) mTuple
- assertRange (2, 27) (2, 28) msSlash
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
diff --git a/tests/service/SyntaxTreeTests/MemberFlagTests.fs b/tests/service/SyntaxTreeTests/MemberFlagTests.fs
deleted file mode 100644
index c1c55b3a07c..00000000000
--- a/tests/service/SyntaxTreeTests/MemberFlagTests.fs
+++ /dev/null
@@ -1,185 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.MemberFlagTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-
-[]
-let ``SynMemberSig.Member has correct keywords`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace X
-
-type Y =
- abstract A : int
- abstract member B : double
- static member C : string
- member D : int
- override E : int
- default F : int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [ SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Types(types =[
- SynTypeDefnSig(typeRepr=SynTypeDefnSigRepr.ObjectModel(memberSigs=[
- SynMemberSig.Member(memberSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.Abstract mAbstract1 }))
- SynMemberSig.Member(memberSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.AbstractMember(mAbstract2, mMember1) }))
- SynMemberSig.Member(memberSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.StaticMember(mStatic3, mMember3) }))
- SynMemberSig.Member(memberSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.Member mMember4 }))
- SynMemberSig.Member(memberSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.Override mOverride5 }))
- SynMemberSig.Member(memberSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.Default mDefault6 }))
- ]))
- ])
- ]) ])) ->
- assertRange (5, 4) (5, 12) mAbstract1
- assertRange (6, 4) (6, 12) mAbstract2
- assertRange (6, 13) (6, 19) mMember1
- assertRange (7, 4) (7, 10) mStatic3
- assertRange (7, 11) (7, 17) mMember3
- assertRange (8, 4) (8, 10) mMember4
- assertRange (9, 4) (9, 12) mOverride5
- assertRange (10, 4) (10, 11) mDefault6
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynMemberDefn.AbstractSlot has correct keyword`` () =
- let ast = """
-type Foo =
- abstract X : int
- abstract member Y: int
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types ([
- SynTypeDefn.SynTypeDefn (typeRepr = SynTypeDefnRepr.ObjectModel (members=[
- SynMemberDefn.AbstractSlot(slotSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.Abstract mAbstract1 }))
- SynMemberDefn.AbstractSlot(slotSig = SynValSig(trivia = { LeadingKeyword = SynLeadingKeyword.AbstractMember(mAbstract2, mMember2) }))
- ]))
- ], _)
- ])
- ])) ->
- assertRange (3, 4) (3, 12) mAbstract1
- assertRange (4, 4) (4, 12) mAbstract2
- assertRange (4, 13) (4, 19) mMember2
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynMemberDefn.AutoProperty has correct keyword`` () =
- let ast = """
-type Foo =
- static member val W : int = 1
- member val X : int = 1
- override val Y : int = 2
- default val Z : int = 1
-"""
- |> getParseResults
-
- let (|LeadingKeyword|_|) md =
- match md with
- | SynMemberDefn.AutoProperty(trivia = { LeadingKeyword = lk }) -> Some lk
- | _ -> None
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types ([
- SynTypeDefn.SynTypeDefn (typeRepr = SynTypeDefnRepr.ObjectModel (members=[
- LeadingKeyword(SynLeadingKeyword.StaticMemberVal(mStatic1, mMember1, mVal1))
- LeadingKeyword(SynLeadingKeyword.MemberVal(mMember2, mVal2))
- LeadingKeyword(SynLeadingKeyword.OverrideVal(mOverride3, mVal3))
- LeadingKeyword(SynLeadingKeyword.DefaultVal(mDefault4, mVal4))
- ]))
- ], _)
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic1
- assertRange (3, 11) (3, 17) mMember1
- assertRange (3, 18) (3, 21) mVal1
-
- assertRange (4, 4) (4, 10) mMember2
- assertRange (4, 11) (4, 14) mVal2
-
- assertRange (5, 4) (5, 12) mOverride3
- assertRange (5, 13) (5, 16) mVal3
-
- assertRange (6, 4) (6, 11) mDefault4
- assertRange (6, 12) (6, 15) mVal4
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynMemberDefn.Member SynValData has correct keyword`` () =
- let ast = """
-type Foo =
- static member this.B() = ()
- member this.A() = ()
- override this.C() = ()
- default this.D() = ()
-"""
- |> getParseResults
-
- let (|LeadingKeyword|_|) md =
- match md with
- | SynMemberDefn.Member(memberDefn = SynBinding(trivia = { LeadingKeyword = lk })) -> Some lk
- | _ -> None
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types ([
- SynTypeDefn.SynTypeDefn (typeRepr = SynTypeDefnRepr.ObjectModel (members=[
- LeadingKeyword(SynLeadingKeyword.StaticMember(mStatic1, mMember1))
- LeadingKeyword(SynLeadingKeyword.Member(mMember2))
- LeadingKeyword(SynLeadingKeyword.Override(mOverride3))
- LeadingKeyword(SynLeadingKeyword.Default mDefaultRange4)
- ]))
- ], _)
- ])
- ])) ->
- assertRange (3, 4) (3, 10) mStatic1
- assertRange (3, 11) (3, 17) mMember1
- assertRange (4, 4) (4, 10) mMember2
- assertRange (5, 4) (5, 12) mOverride3
- assertRange (6, 4) (6, 11) mDefaultRange4
- | _ ->
- Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynExpr.Obj members have correct keywords`` () =
- let ast = """
-let meh =
- { new Interface with
- override this.Foo () = ()
- member this.Bar () = ()
- interface SomethingElse with
- member this.Blah () = () }
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let (bindings = [
- SynBinding(expr=SynExpr.ObjExpr(
- members=[
- SynMemberDefn.Member(memberDefn=SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Override mOverride1 }))
- SynMemberDefn.Member(memberDefn=SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Member mMember2 }))
- ]
- extraImpls=[ SynInterfaceImpl(members=[
- SynMemberDefn.Member(memberDefn=SynBinding(trivia = { LeadingKeyword = SynLeadingKeyword.Member mMember3 }))
- ]) ]))
- ])
- ]) ])) ->
- assertRange (4, 8) (4, 16) mOverride1
- assertRange (5, 8) (5, 14) mMember2
- assertRange (7, 8) (7, 14) mMember3
- | _ ->
- Assert.Fail "Could not get valid AST"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/MemberTests.fs b/tests/service/SyntaxTreeTests/MemberTests.fs
deleted file mode 100644
index 9b6cfa35379..00000000000
--- a/tests/service/SyntaxTreeTests/MemberTests.fs
+++ /dev/null
@@ -1,387 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.MemberTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``SynTypeDefn with AutoProperty contains the range of the equals sign`` () =
- let parseResults =
- getParseResults
- """
-/// mutable class with auto-properties
-type Person(name : string, age : int) =
- /// Full name
- member val Name = name with get, set
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [_ ; SynMemberDefn.AutoProperty(trivia = { EqualsRange = Some mEquals })])) ]
- )
- ]) ])) ->
- assertRange (5, 20) (5, 21) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynTypeDefn with AutoProperty contains the range of the with keyword`` () =
- let parseResults =
- getParseResults
- """
-type Foo() =
- member val AutoProperty = autoProp with get, set
- member val AutoProperty2 = autoProp
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [_
- SynMemberDefn.AutoProperty(trivia = { WithKeyword = Some mWith
- GetSetKeywords = Some (GetSetKeywords.GetSet(mGet, mSet)) })
- SynMemberDefn.AutoProperty(trivia = { WithKeyword = None })])) ]
- )
- ]) ])) ->
- assertRange (3, 39) (3, 43) mWith
- assertRange (3, 44) (3, 47) mGet
- assertRange (3, 49) (3, 52) mSet
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynTypeDefn with AbstractSlot contains the range of the with keyword`` () =
- let parseResults =
- getParseResults
- """
-type Foo() =
- abstract member Bar : int with get,set
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [_
- SynMemberDefn.AbstractSlot(slotSig=SynValSig(trivia = { WithKeyword = Some mWith })
- trivia = { GetSetKeywords = Some (GetSetKeywords.GetSet(mGet, mSet)) })])) ]
- )
- ]) ])) ->
- assertRange (3, 30) (3, 34) mWith
- assertRange (3, 35) (3, 38) mGet
- assertRange (3, 39) (3, 42) mSet
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``read-only property in SynMemberDefn.Member contains the range of the with keyword`` () =
- let parseResults =
- getParseResults
- """
-type Foo() =
- // A read-only property.
- member this.MyReadProperty with get () = myInternalValue
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr =
- SynTypeDefnRepr.ObjectModel(members=[
- _
- SynMemberDefn.GetSetMember(Some(SynBinding _), None, _, { WithKeyword = mWith }) ])
- ) ])
- ]) ])) ->
- assertRange (4, 31) (4, 35) mWith
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``write-only property in SynMemberDefn.Member contains the range of the with keyword`` () =
- let parseResults =
- getParseResults
- """
-type Foo() =
- // A write-only property.
- member this.MyWriteOnlyProperty with set (value) = myInternalValue <- value
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr =
- SynTypeDefnRepr.ObjectModel(members=[
- _
- SynMemberDefn.GetSetMember(None, Some(SynBinding _), _, { WithKeyword = mWith }) ])
- ) ])
- ]) ])) ->
- assertRange (4, 36) (4, 40) mWith
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``read/write property in SynMemberDefn.Member contains the range of the with keyword`` () =
- let parseResults =
- getParseResults
- """
-type Foo() =
- // A read-write property.
- member this.MyReadWriteProperty
- with get () = myInternalValue
- and set (value) = myInternalValue <- value
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr =
- SynTypeDefnRepr.ObjectModel(members=[
- _
- SynMemberDefn.GetSetMember(Some _, Some _, _, { WithKeyword = mWith; AndKeyword = Some mAnd }) ])
- ) ])
- ]) ])) ->
- assertRange (5, 8) (5, 12) mWith
- assertRange (6, 8) (6, 11) mAnd
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynTypeDefn with static member with get/set`` () =
- let parseResults =
- getParseResults
- """
-type Foo =
- static member ReadWrite2
- with set x = lastUsed <- ("ReadWrite2", x)
- and get () = lastUsed <- ("ReadWrite2", 0); 4
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.GetSetMember(Some _, Some _, m, { WithKeyword = mWith
- GetKeyword = Some mGet
- AndKeyword = Some mAnd
- SetKeyword = Some mSet })
- ])) ]
- )
- ]) ])) ->
- assertRange (4, 8) (4, 12) mWith
- assertRange (4, 13) (4, 16) mSet
- assertRange (5, 8) (5, 11) mAnd
- assertRange (5, 13) (5, 16) mGet
- assertRange (3, 4) (5, 54) m
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynTypeDefn with member with set/get`` () =
- let parseResults =
- getParseResults
- """
-type A() =
- member this.Z with set (_:int):unit = () and get():int = 1
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.ImplicitCtor _
- SynMemberDefn.GetSetMember(Some (SynBinding(headPat = SynPat.LongIdent(extraId = Some getIdent))),
- Some (SynBinding(headPat = SynPat.LongIdent(extraId = Some setIdent))),
- m,
- { WithKeyword = mWith
- GetKeyword = Some mGet
- AndKeyword = Some mAnd
- SetKeyword = Some mSet })
- ])) ]
- )
- ]) ])) ->
- Assert.AreEqual("get", getIdent.idText)
- Assert.AreEqual("set", setIdent.idText)
- assertRange (3, 18) (3, 22) mWith
- assertRange (3, 23) (3, 26) mSet
- assertRange (3, 23) (3, 26) setIdent.idRange
- assertRange (3, 45) (3, 48) mAnd
- assertRange (3, 49) (3, 52) mGet
- assertRange (3, 49) (3, 52) getIdent.idRange
- assertRange (3, 4) (3, 62) m
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynTypeDefn with member with get has xml comment`` () =
- let parseResults =
- getParseResults
- """
-type A =
- /// B
- member x.B with get() = 5
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.GetSetMember(Some (SynBinding(xmlDoc = preXmlDoc)),
- None,
- _,
- _)
- ])) ]
- )
- ]) ])) ->
- Assert.False preXmlDoc.IsEmpty
- let comment = preXmlDoc.ToXmlDoc(false, None).GetXmlText()
- Assert.False (System.String.IsNullOrWhiteSpace(comment))
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Signature member with set,get`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-module Meh
-
-type X =
- // MemberSig.Member
- member Y : int
- with
- set , get
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents=[
- SynModuleOrNamespaceSig(decls=[
- SynModuleSigDecl.Types(types = [
- SynTypeDefnSig(typeRepr = SynTypeDefnSigRepr.ObjectModel(memberSigs = [
- SynMemberSig.Member(memberSig = SynValSig(trivia = { WithKeyword = Some mWith })
- trivia = { GetSetKeywords = Some (GetSetKeywords.GetSet(mGet, mSet)) })
- ]))
- ])
- ] ) ])) ->
- assertRange (7, 20) (7, 24) mWith
- assertRange (8, 28) (8, 31) mSet
- assertRange (8, 36) (8, 39) mGet
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Signature member with set`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-module Meh
-
-type X =
- // MemberSig.Member
- member Y : int
- with
- set
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents=[
- SynModuleOrNamespaceSig(decls=[
- SynModuleSigDecl.Types(types = [
- SynTypeDefnSig(typeRepr = SynTypeDefnSigRepr.ObjectModel(memberSigs = [
- SynMemberSig.Member(memberSig = SynValSig(trivia = { WithKeyword = Some mWith })
- trivia = { GetSetKeywords = Some (GetSetKeywords.Set(mSet)) })
- ]))
- ])
- ] ) ])) ->
- assertRange (7, 20) (7, 24) mWith
- assertRange (8, 28) (8, 31) mSet
- | _ -> Assert.Fail "Could not get valid AST"
-
-
-[]
-let ``Signature member with get`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-module Meh
-
-type X =
- // MemberSig.Member
- member Y : int
- with
- get
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents=[
- SynModuleOrNamespaceSig(decls=[
- SynModuleSigDecl.Types(types = [
- SynTypeDefnSig(typeRepr = SynTypeDefnSigRepr.ObjectModel(memberSigs = [
- SynMemberSig.Member(memberSig = SynValSig(trivia = { WithKeyword = Some mWith })
- trivia = { GetSetKeywords = Some (GetSetKeywords.Get(mGet)) })
- ]))
- ])
- ] ) ])) ->
- assertRange (7, 20) (7, 24) mWith
- assertRange (8, 32) (8, 35) mGet
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Member with inline keyword`` () =
- let parseResults =
- getParseResults
- """
-type X =
- member inline x.Y () = ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.Member(memberDefn = SynBinding(trivia = { InlineKeyword = Some mInline }))
- ])) ]
- )
- ]) ])) ->
- assertRange (3, 11) (3, 17) mInline
- | ast -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``Get/Set member with inline keyword`` () =
- let parseResults =
- getParseResults
- """
-type X =
- member inline x.Y
- with inline get () = 4
- and inline set y = ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.GetSetMember(Some (SynBinding(trivia = { InlineKeyword = Some mInlineGet })),
- Some (SynBinding(trivia = { InlineKeyword = Some mInlineSet })),
- _,
- { InlineKeyword = Some mInlineGetSetMember })
- ])) ]
- )
- ]) ])) ->
- assertRange (3, 11) (3, 17) mInlineGetSetMember
- assertRange (4, 13) (4, 19) mInlineGet
- assertRange (5, 12) (5, 18) mInlineSet
- | ast -> Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``ImplicitCtor with as keyword`` () =
- let parseResults =
- getParseResults
- """
-type internal CompilerStateCache(readAllBytes: string -> byte[], projectOptions: FSharpProjectOptions)
-//#if !NO_TYPEPROVIDERS
- as this =
-//#else
-// =
-// #endif
- class end
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(
- typeDefns = [ SynTypeDefn(implicitConstructor = Some (SynMemberDefn.ImplicitCtor(trivia = { AsKeyword = Some mAs }))) ]
- )
- ]) ])) ->
- assertRange (4, 4) (4, 6) mAs
- | ast -> Assert.Fail $"Could not get valid AST, got {ast}"
diff --git a/tests/service/SyntaxTreeTests/ModuleOrNamespaceSigTests.fs b/tests/service/SyntaxTreeTests/ModuleOrNamespaceSigTests.fs
deleted file mode 100644
index b49dfc3850b..00000000000
--- a/tests/service/SyntaxTreeTests/ModuleOrNamespaceSigTests.fs
+++ /dev/null
@@ -1,93 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.ModuleOrNamespaceSigTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``Range member returns range of SynModuleOrNamespaceSig`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace Foobar
-
-type Bar = | Bar of string * int
-"""
-
- match parseResults with
- | ParsedInput.SigFile(ParsedSigFileInput(contents = [
- SynModuleOrNamespaceSig(kind = SynModuleOrNamespaceKind.DeclaredNamespace) as singleModule
- ])) ->
- assertRange (2,0) (4,32) singleModule.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``GlobalNamespace should start at namespace keyword`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """// foo
-// bar
-namespace global
-
-type Bar = | Bar of string * int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(kind = SynModuleOrNamespaceKind.GlobalNamespace; range = r) ])) ->
- assertRange (3, 0) (5, 32) r
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Module range should start at first attribute`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
- [< Foo >]
-module Bar
-
-val s : string
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig.SynModuleOrNamespaceSig(kind = SynModuleOrNamespaceKind.NamedModule; range = r) ])) ->
- assertRange (2, 1) (5, 14) r
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Module should contain module keyword`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-module Bar
-
-val a: int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(
- kind = SynModuleOrNamespaceKind.NamedModule
- trivia = { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Module mModule }) ])) ->
- assertRange (2, 0) (2, 6) mModule
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Namespace should contain namespace keyword`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace Foo
-module Bar =
-val a: int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(
- kind = SynModuleOrNamespaceKind.DeclaredNamespace
- trivia = { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Namespace mNamespace }) ])) ->
- assertRange (2, 0) (2, 9) mNamespace
- | _ -> Assert.Fail "Could not get valid AST"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/ModuleOrNamespaceTests.fs b/tests/service/SyntaxTreeTests/ModuleOrNamespaceTests.fs
deleted file mode 100644
index 7b444091363..00000000000
--- a/tests/service/SyntaxTreeTests/ModuleOrNamespaceTests.fs
+++ /dev/null
@@ -1,140 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.ModuleOrNamespaceTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``DeclaredNamespace range should start at namespace keyword`` () =
- let parseResults =
- getParseResults
- """namespace TypeEquality
-
-/// A type for witnessing type equality between 'a and 'b
-type Teq<'a, 'b>
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(kind = SynModuleOrNamespaceKind.DeclaredNamespace; range = r) ])) ->
- assertRange (1, 0) (4, 8) r
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Multiple DeclaredNamespaces should have a range that starts at the namespace keyword`` () =
- let parseResults =
- getParseResults
- """namespace TypeEquality
-
-/// A type for witnessing type equality between 'a and 'b
-type Teq = class end
-
-namespace Foobar
-
-let x = 42
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(kind = SynModuleOrNamespaceKind.DeclaredNamespace; range = r1)
- SynModuleOrNamespace.SynModuleOrNamespace(kind = SynModuleOrNamespaceKind.DeclaredNamespace; range = r2) ])) ->
- assertRange (1, 0) (4, 20) r1
- assertRange (6, 0) (8, 10) r2
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``GlobalNamespace should start at namespace keyword`` () =
- let parseResults =
- getParseResults
- """// foo
-// bar
-namespace global
-
-type X = int
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(kind = SynModuleOrNamespaceKind.GlobalNamespace; range = r) ])) ->
- assertRange (3, 0) (5, 12) r
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Module range should start at first attribute`` () =
- let parseResults =
- getParseResults
- """
-[< Foo >]
-module Bar
-
-let s : string = "s"
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(kind = SynModuleOrNamespaceKind.NamedModule; range = r) ])) ->
- assertRange (2, 0) (5, 20) r
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Module should contain module keyword`` () =
- let parseResults =
- getParseResults
- """
-/// this file contains patches to the F# Compiler Service that have not yet made it into
-/// published nuget packages. We source-copy them here to have a consistent location for our to-be-removed extensions
-
-module FsAutoComplete.FCSPatches
-
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.Text
-open FsAutoComplete.UntypedAstUtils
-open FSharp.Compiler.CodeAnalysis
-
-module internal SynExprAppLocationsImpl =
-let a = 42
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(
- kind = SynModuleOrNamespaceKind.NamedModule
- trivia = { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Module mModule }) ])) ->
- assertRange (5, 0) (5, 6) mModule
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Namespace should contain namespace keyword`` () =
- let parseResults =
- getParseResults
- """
-namespace Foo
-module Bar =
-let a = 42
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(
- kind = SynModuleOrNamespaceKind.DeclaredNamespace
- trivia = { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Namespace mNamespace }) ])) ->
- assertRange (2, 0) (2, 9) mNamespace
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``global in open path should contain trivia`` () =
- let parseResults =
- getParseResults
- """
-namespace Ionide.VSCode.FSharp
-
-open global.Node
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Open(target = SynOpenDeclTarget.ModuleOrNamespace(longId = SynLongIdent(trivia = [ Some (IdentTrivia.OriginalNotation("global")); None ])))
- ]) ])) ->
- Assert.Pass()
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
diff --git a/tests/service/SyntaxTreeTests/NestedModuleTests.fs b/tests/service/SyntaxTreeTests/NestedModuleTests.fs
deleted file mode 100644
index fcdde98008a..00000000000
--- a/tests/service/SyntaxTreeTests/NestedModuleTests.fs
+++ /dev/null
@@ -1,172 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.NestedModuleTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-
-[]
-let ``Range of attribute should be included in SynModuleSigDecl.NestedModule`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace SomeNamespace
-
-[]
-module Nested =
- val x : int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [ SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.NestedModule _ as nm
- ]) as sigModule ])) ->
- assertRange (4, 0) (6, 15) nm.Range
- assertRange (2, 0) (6, 15) sigModule.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in SynModuleDecl.NestedModule`` () =
- let parseResults =
- getParseResults
- """
-module TopLevel
-
-[]
-module Nested =
- ()"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.NestedModule _ as nm
- ]) ])) ->
- assertRange (4, 0) (6, 6) nm.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present`` () =
- let parseResults =
- getParseResults
- """
-module X =
-()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.NestedModule(trivia = { ModuleKeyword = Some mModule; EqualsRange = Some mEquals })
- ]) ])) ->
- assertRange (2, 0) (2, 6) mModule
- assertRange (2, 9) (2, 10) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of equal sign should be present, signature file`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace Foo
-
-module X =
-val bar : int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [ SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.NestedModule(trivia = { ModuleKeyword = Some mModule; EqualsRange = Some mEquals })
- ]) ])) ->
- assertRange (4, 0) (4, 6) mModule
- assertRange (4, 9) (4, 10) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of nested module in signature file should end at the last SynModuleSigDecl`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """namespace Microsoft.FSharp.Core
-
-open System
-open System.Collections.Generic
-open Microsoft.FSharp.Core
-open Microsoft.FSharp.Collections
-open System.Collections
-
-
-module Tuple =
-
- type Tuple<'T1,'T2,'T3,'T4> =
- interface IStructuralEquatable
- interface IStructuralComparable
- interface IComparable
- new : 'T1 * 'T2 * 'T3 * 'T4 -> Tuple<'T1,'T2,'T3,'T4>
- member Item1 : 'T1 with get
- member Item2 : 'T2 with get
- member Item3 : 'T3 with get
- member Item4 : 'T4 with get
-
-
-module Choice =
-
- /// Helper types for active patterns with 6 choices.
- []
- []
- type Choice<'T1,'T2,'T3,'T4,'T5,'T6> =
- /// Choice 1 of 6 choices
- | Choice1Of6 of 'T1
- /// Choice 2 of 6 choices
- | Choice2Of6 of 'T2
- /// Choice 3 of 6 choices
- | Choice3Of6 of 'T3
- /// Choice 4 of 6 choices
- | Choice4Of6 of 'T4
- /// Choice 5 of 6 choices
- | Choice5Of6 of 'T5
- /// Choice 6 of 6 choices
- | Choice6Of6 of 'T6
-
-
-
-/// Basic F# Operators. This module is automatically opened in all F# code.
-[]
-module Operators =
-
- type ``[,]``<'T> with
- []
- /// Get the length of an array in the first dimension
- member Length1 : int
- []
- /// Get the length of the array in the second dimension
- member Length2 : int
- []
- /// Get the lower bound of the array in the first dimension
- member Base1 : int
- []
- /// Get the lower bound of the array in the second dimension
- member Base2 : int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [ SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Open _
- SynModuleSigDecl.Open _
- SynModuleSigDecl.Open _
- SynModuleSigDecl.Open _
- SynModuleSigDecl.Open _
- SynModuleSigDecl.NestedModule(range=mTupleModule; moduleDecls=[ SynModuleSigDecl.Types([
- SynTypeDefnSig(typeRepr=SynTypeDefnSigRepr.ObjectModel(range=mTupleObjectModel); range=mTupleType)
- ], mTupleTypes) ])
- SynModuleSigDecl.NestedModule(range=mChoiceModule)
- SynModuleSigDecl.NestedModule(range=mOperatorsModule; moduleDecls=[ SynModuleSigDecl.Types([
- SynTypeDefnSig(typeRepr=SynTypeDefnSigRepr.Simple(range=mAugmentationSimple); range=mAugmentation)
- ], mOperatorsTypes) ])
- ]) ])) ->
- assertRange (10, 0) (20, 35) mTupleModule
- assertRange (12, 4) (20, 35) mTupleTypes
- assertRange (12, 9) (20, 35) mTupleType
- assertRange (13, 8) (20, 35) mTupleObjectModel
- assertRange (23, 0) (40, 25) mChoiceModule
- assertRange (44, 0) (60, 26) mOperatorsModule
- assertRange (48, 4) (60, 26) mOperatorsTypes
- assertRange (48, 9) (60, 26) mAugmentation
- assertRange (48, 9) (60, 26) mAugmentationSimple
- | _ -> Assert.Fail "Could not get valid AST"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/OperatorNameTests.fs b/tests/service/SyntaxTreeTests/OperatorNameTests.fs
deleted file mode 100644
index 9efbb4dc972..00000000000
--- a/tests/service/SyntaxTreeTests/OperatorNameTests.fs
+++ /dev/null
@@ -1,486 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.OperatorNameTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``operator as function`` () =
- let ast = """
-(+) 3 4
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr (expr = SynExpr.App(funcExpr = SynExpr.App(funcExpr =
- SynExpr.LongIdent(longDotId = SynLongIdent([ident], _, [Some (IdentTrivia.OriginalNotationWithParen(lpr, "+", rpr))])))))
- ])
- ])) ->
- assertRange (2, 0) (2, 1) lpr
- Assert.AreEqual("op_Addition", ident.idText)
- assertRange (2, 2) (2, 3) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``active pattern as function `` () =
- let ast = """
-(|Odd|Even|) 4
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr (expr = SynExpr.App(funcExpr =
- SynExpr.LongIdent(false, SynLongIdent([ ident ], _, [ Some(IdentTrivia.HasParenthesis(lpr, rpr)) ]), None, pr)))
- ])
- ])) ->
- assertRange (2, 0) (2, 1) lpr
- Assert.AreEqual("|Odd|Even|", ident.idText)
- assertRange (2, 11) (2, 12) rpr
- assertRange (2, 0) (2, 12) pr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``partial active pattern as function `` () =
- let ast = """
-(|Odd|_|) 4
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr (expr = SynExpr.App(funcExpr =
- SynExpr.LongIdent(false, SynLongIdent([ ident ], _, [ Some(IdentTrivia.HasParenthesis(lpr, rpr)) ]), None, pr)))
- ])
- ])) ->
- assertRange (2, 0) (2, 1) lpr
- Assert.AreEqual("|Odd|_|", ident.idText)
- assertRange (2, 8) (2, 9) rpr
- assertRange (2, 0) (2, 9) pr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``custom operator definition`` () =
- let ast = """
-let (+) a b = a + b
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(headPat=
- SynPat.LongIdent(longDotId = SynLongIdent([ ident ],_, [ Some (IdentTrivia.OriginalNotationWithParen(lpr, "+", rpr)) ])))
- ])
- ])])) ->
- assertRange (2, 4) (2,5) lpr
- Assert.AreEqual("op_Addition", ident.idText)
- assertRange (2, 6) (2, 7) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``active pattern definition`` () =
- let ast = """
-let (|Odd|Even|) (a: int) = if a % 2 = 0 then Even else Odd
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(headPat=
- SynPat.LongIdent(longDotId = SynLongIdent([ident], _, [Some (IdentTrivia.HasParenthesis(lpr, rpr))])))
- ])
- ])])) ->
- assertRange (2, 4) (2, 5) lpr
- Assert.AreEqual("|Odd|Even|", ident.idText)
- assertRange (2, 15) (2, 16) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``partial active pattern definition`` () =
- let ast = """
-let (|Int32Const|_|) (a: SynConst) = match a with SynConst.Int32 _ -> Some a | _ -> None
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(headPat=
- SynPat.LongIdent(longDotId = SynLongIdent([ident], _, [Some (IdentTrivia.HasParenthesis(lpr, rpr))])))
- ])
- ])])) ->
- assertRange (2, 4) (2, 5) lpr
- Assert.AreEqual("|Int32Const|_|", ident.idText)
- assertRange (2, 19) (2, 20) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``partial active pattern definition without parameters`` () =
- let ast = """
-let (|Boolean|_|) = Boolean.parse
-"""
- |> getParseResults
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [SynBinding(headPat=
- SynPat.Named(ident = SynIdent(ident, Some (IdentTrivia.HasParenthesis(lpr, rpr)))))
- ])
- ])])) ->
- assertRange (2, 4) (2, 5) lpr
- Assert.AreEqual("|Boolean|_|", ident.idText)
- assertRange (2, 16) (2, 17) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-
-[]
-let ``operator name in SynValSig`` () =
- let ast = """
-module IntrinsicOperators
-val (&): e1: bool -> e2: bool -> bool
-"""
- |> getParseResultsOfSignatureFile
-
- match ast with
- | ParsedInput.SigFile(ParsedSigFileInput(contents = [
- SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Val(valSig = SynValSig(ident = SynIdent(ident, Some (IdentTrivia.OriginalNotationWithParen(lpr, "&", rpr)))
- ))])
- ])) ->
- assertRange (3, 4) (3, 5) lpr
- Assert.AreEqual("op_Amp", ident.idText)
- assertRange (3, 6) (3, 7) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``operator name in val constraint`` () =
- let ast =
- getParseResultsOfSignatureFile """
- []
- module Operators
- /// Overloaded unary negation.
- ///
- /// The value to negate.
- ///
- /// The result of the operation.
- ///
- ///
- ///
- val inline (~-): n: ^T -> ^T when ^T: (static member ( ~- ): ^T -> ^T) and default ^T: int
-"""
-
- match ast with
- | ParsedInput.SigFile(ParsedSigFileInput(contents = [
- SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Val(valSig = SynValSig(synType=SynType.WithGlobalConstraints(constraints=[
- SynTypeConstraint.WhereTyparSupportsMember(memberSig=SynMemberSig.Member(memberSig=SynValSig(ident =
- SynIdent(ident, Some (IdentTrivia.OriginalNotationWithParen(lpr, "~-", rpr))))))
- SynTypeConstraint.WhereTyparDefaultsToType _
- ])))
- ])
- ])) ->
- assertRange (12, 57) (12, 58) lpr
- Assert.AreEqual("op_UnaryNegation", ident.idText)
- assertRange (12, 62) (12, 63) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``named parameter`` () =
- let ast = getParseResults """
-f(x=4)
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr = SynExpr.App(argExpr = SynExpr.Paren(expr = SynExpr.App(funcExpr=
- SynExpr.App(funcExpr= SynExpr.LongIdent(longDotId = SynLongIdent([ident], _, [Some (IdentTrivia.OriginalNotation "=")])))))))
- ])
- ])) ->
- Assert.AreEqual("op_Equality", ident.idText)
- assertRange (2,3) (2,4) ident.idRange
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``infix operation`` () =
- let ast = getParseResults """
-1 + 1
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.App(funcExpr = SynExpr.App(isInfix = true
- funcExpr = SynExpr.LongIdent(longDotId = SynLongIdent([ident], _, [Some (IdentTrivia.OriginalNotation "+")]))
- argExpr = SynExpr.Const(SynConst.Int32(1), _))
- argExpr = SynExpr.Const(SynConst.Int32(1), _)))
- ])
- ])) ->
- Assert.AreEqual("op_Addition", ident.idText)
- assertRange (2,2) (2,3) ident.idRange
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``prefix operation`` () =
- let ast = getParseResults """
-+ -86
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.App(isInfix = false
- funcExpr = SynExpr.LongIdent(longDotId = SynLongIdent([ident], _, [Some (IdentTrivia.OriginalNotation "+")]))
- argExpr = SynExpr.Const(SynConst.Int32(-86), _)))
- ])
- ])) ->
- Assert.AreEqual("op_UnaryPlus", ident.idText)
- assertRange (2,0) (2,1) ident.idRange
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``prefix operation with two characters`` () =
- let ast = getParseResults """
-%%arg
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.App(isInfix = false
- funcExpr = SynExpr.LongIdent(longDotId = SynLongIdent([ident], _, [Some (IdentTrivia.OriginalNotation "%%")]))
- argExpr = SynExpr.Ident argIdent))
- ])
- ])) ->
- Assert.AreEqual("op_SpliceUntyped", ident.idText)
- assertRange (2,0) (2,2) ident.idRange
- Assert.AreEqual("arg", argIdent.idText)
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``detect difference between compiled operators`` () =
- let ast = getParseResults """
-(+) a b
-op_Addition a b
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.App(funcExpr = SynExpr.App(isInfix = false
- funcExpr = SynExpr.LongIdent(longDotId = SynLongIdent([ident], _, [Some (IdentTrivia.OriginalNotationWithParen(lpr, "+", rpr))]))
- argExpr = SynExpr.Ident a1)
- argExpr = SynExpr.Ident b1))
- SynModuleDecl.Expr(expr =
- SynExpr.App(funcExpr = SynExpr.App(isInfix = false
- funcExpr = SynExpr.Ident op_Addition
- argExpr = SynExpr.Ident a2)
- argExpr = SynExpr.Ident b2)
- )
- ])
- ])) ->
- assertRange (2,0) (2,1) lpr
- Assert.AreEqual("op_Addition", ident.idText)
- assertRange (2,2) (2,3) rpr
- Assert.AreEqual("a", a1.idText)
- Assert.AreEqual("b", b1.idText)
-
- Assert.AreEqual("op_Addition", op_Addition.idText)
- Assert.AreEqual("a", a2.idText)
- Assert.AreEqual("b", b2.idText)
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``operator in member definition`` () =
- let ast = getParseResults """
-type X with
- member _.(+) a b = a + b
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(members = [
- SynMemberDefn.Member(memberDefn = SynBinding(headPat = SynPat.LongIdent(longDotId =
- SynLongIdent([ _; operatorIdent ], [ mDot ], [ None; Some (IdentTrivia.OriginalNotationWithParen(lpr, "+", rpr)) ]) as lid)))
- ])
- ]
- )
- ])
- ])) ->
- assertRange (3,12) (3,13) mDot
- assertRange (3,13) (3,14) lpr
- Assert.AreEqual("op_Addition", operatorIdent.idText)
- assertRange (3,15) (3,16) rpr
- assertRange (3,11) (3,15) lid.Range
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``nameof operator`` () =
- let ast = getParseResults """
-nameof(+)
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.App(isInfix = false
- funcExpr = SynExpr.Ident nameofIdent
- argExpr =
- SynExpr.LongIdent(longDotId = SynLongIdent([operatorIdent], _, [Some (IdentTrivia.OriginalNotationWithParen(lpr, "+", rpr))]))
- )
- )
- ])
- ])) ->
- Assert.AreEqual("nameof", nameofIdent.idText)
- assertRange (2,6) (2,7) lpr
- Assert.AreEqual("op_Addition", operatorIdent.idText)
- assertRange (2,8) (2,9) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``optional expression`` () =
- let ast = getParseResults """
-f(?x = 7)
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(expr =
- SynExpr.App(isInfix = false
- funcExpr = SynExpr.Ident f
- argExpr = SynExpr.Paren(
- SynExpr.App(funcExpr = SynExpr.App(
- isInfix = true
- funcExpr = SynExpr.LongIdent(longDotId = SynLongIdent([eqIdent], _, [Some (IdentTrivia.OriginalNotation "=")]))
- argExpr = SynExpr.LongIdent(true, SynLongIdent([x], [], [None]), _, mOptional)
- )
- argExpr = SynExpr.Const(SynConst.Int32 7, _)), lpr, Some rpr, pr)))
- ])
- ])) ->
- Assert.AreEqual("f", f.idText)
- assertRange (2,1) (2,2) lpr
- Assert.AreEqual("x", x.idText)
- assertRange (2,3) (2, 4) mOptional
- Assert.AreEqual("op_Equality", eqIdent.idText)
- assertRange (2,8) (2,9) rpr
- assertRange (2,1) (2,9) pr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``object model with two members`` () =
- let ast = getParseResults """
-type X() =
- let mutable allowInto = 0
- member _.AllowIntoPattern with get() = allowInto and set v = allowInto <- v
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn.SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members =[
- SynMemberDefn.ImplicitCtor _
- SynMemberDefn.LetBindings _
- SynMemberDefn.GetSetMember(
- Some (SynBinding(headPat = SynPat.LongIdent(longDotId = SynLongIdent(id = [ _ ; allowIntoPatternGet ])))),
- Some (SynBinding(headPat = SynPat.LongIdent(longDotId = SynLongIdent(id = [ _ ; allowIntoPatternSet ])))),
- _,
- { WithKeyword = mWith; AndKeyword = Some mAnd })
- ]))
- ])
- ])
- ])) ->
- Assert.AreEqual("AllowIntoPattern", allowIntoPatternGet.idText)
- assertRange (4, 30) (4, 34) mWith
- Assert.AreEqual("AllowIntoPattern", allowIntoPatternSet.idText)
- assertRange (4, 53) (4, 56) mAnd
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``qualified operator expression`` () =
- let ast = getParseResults """
-let PowByte (x:byte) n = Checked.( * ) x
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [
- SynBinding(expr = SynExpr.App(funcExpr =
- SynExpr.LongIdent(longDotId = SynLongIdent([checkedIdent; operatorIdent], [mDot], [None; Some (IdentTrivia.OriginalNotationWithParen(lpr, "*", rpr))]))))
- ])
- ])
- ])) ->
- Assert.AreEqual("Checked", checkedIdent.idText)
- assertRange (2, 32) (2, 33) mDot
- assertRange (2, 33) (2, 34) lpr
- Assert.AreEqual("op_Multiply", operatorIdent.idText)
- assertRange (2, 37) (2, 38) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
-
-[]
-let ``active pattern identifier in private member`` () =
- let ast = getParseResults """
-type A() =
- member private _.(|
- A'
- |) = (|
- Lazy
- |)
-"""
-
- match ast with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [
- SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Types(typeDefns = [
- SynTypeDefn(typeRepr = SynTypeDefnRepr.ObjectModel(members = [
- SynMemberDefn.ImplicitCtor _
- SynMemberDefn.Member(memberDefn = SynBinding(
- headPat = SynPat.LongIdent(longDotId = SynLongIdent([underscoreIdent; aQuoteIdent], [ _ ], [ None; Some (IdentTrivia.HasParenthesis(lpr, rpr)) ]))
- ))
- ]))
- ])
- ])
- ])) ->
- ()
- Assert.AreEqual("_", underscoreIdent.idText)
- Assert.AreEqual("|A'|", aQuoteIdent.idText)
- assertRange (3, 21) (3, 22) lpr
- assertRange (5, 5) (5, 6) rpr
- | _ ->
- Assert.Fail $"Could not get valid AST, got {ast}"
\ No newline at end of file
diff --git a/tests/service/SyntaxTreeTests/ParsedHashDirectiveTests.fs b/tests/service/SyntaxTreeTests/ParsedHashDirectiveTests.fs
deleted file mode 100644
index f834680fdff..00000000000
--- a/tests/service/SyntaxTreeTests/ParsedHashDirectiveTests.fs
+++ /dev/null
@@ -1,61 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.ParsedHashDirectiveTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open NUnit.Framework
-
-[]
-let ``SourceIdentifier as ParsedHashDirectiveArgument`` () =
- let parseResults =
- getParseResults
- "#I __SOURCE_DIRECTORY__"
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.HashDirective(ParsedHashDirective("I", [ ParsedHashDirectiveArgument.SourceIdentifier(c,_,m) ] , _), _)
- ]) ])) ->
- Assert.AreEqual("__SOURCE_DIRECTORY__", c)
- assertRange (1, 3) (1, 23) m
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Regular String as ParsedHashDirectiveArgument`` () =
- let parseResults =
- getParseResults
- "#I \"/tmp\""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.HashDirective(ParsedHashDirective("I", [ ParsedHashDirectiveArgument.String(v, SynStringKind.Regular, m) ] , _), _)
- ]) ])) ->
- Assert.AreEqual("/tmp", v)
- assertRange (1, 3) (1, 9) m
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Verbatim String as ParsedHashDirectiveArgument`` () =
- let parseResults =
- getParseResults
- "#I @\"C:\\Temp\""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.HashDirective(ParsedHashDirective("I", [ ParsedHashDirectiveArgument.String(v, SynStringKind.Verbatim, m) ] , _), _)
- ]) ])) ->
- Assert.AreEqual("C:\\Temp", v)
- assertRange (1, 3) (1, 13) m
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Triple quote String as ParsedHashDirectiveArgument`` () =
- let parseResults =
- getParseResults
- "#nowarn \"\"\"40\"\"\""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.HashDirective(ParsedHashDirective("nowarn", [ ParsedHashDirectiveArgument.String(v, SynStringKind.TripleQuote, m) ] , _), _)
- ]) ])) ->
- Assert.AreEqual("40", v)
- assertRange (1, 8) (1, 16) m
- | _ -> Assert.Fail "Could not get valid AST"
diff --git a/tests/service/SyntaxTreeTests/PatternTests.fs b/tests/service/SyntaxTreeTests/PatternTests.fs
deleted file mode 100644
index c03325e6077..00000000000
--- a/tests/service/SyntaxTreeTests/PatternTests.fs
+++ /dev/null
@@ -1,140 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.PatternTestsTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``SynPat.Record contains the range of the equals sign`` () =
- let parseResults =
- getParseResults
- """
-match x with
-| { Foo = bar } -> ()
-| _ -> ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Match(clauses = [ SynMatchClause(pat = SynPat.Record(fieldPats = [ (_, mEquals, _) ])) ; _ ])
- )
- ]) ])) ->
- assertRange (3, 8) (3, 9) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynArgPats.NamePatPairs contains the range of the equals sign`` () =
- let parseResults =
- getParseResults
- """
-match x with
-| X(Y = y) -> y
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Match(clauses = [ SynMatchClause(pat = SynPat.LongIdent(argPats = SynArgPats.NamePatPairs(pats = [ _, mEquals ,_ ])))])
- )
- ]) ])) ->
- assertRange (3, 7) (3, 8) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynPat.Or contains the range of the bar`` () =
- let parseResults =
- getParseResults
- """
-match x with
-| A
-| B -> ()
-| _ -> ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Match(clauses = [ SynMatchClause(pat = SynPat.Or(trivia={ BarRange = mBar })) ; _ ])
- )
- ]) ])) ->
- assertRange (4, 0) (4, 1) mBar
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``:: operator in SynPat.LongIdent`` () =
- let parseResults =
- getParseResults
- """
-let (head::tail) = [ 1;2;4]
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(
- bindings = [ SynBinding(headPat = SynPat.Paren(pat = SynPat.ListCons(trivia = trivia))) ]
- )
- ]) ])) ->
- assertRange (2,9) (2,11) trivia.ColonColonRange
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``:: operator in match pattern`` () =
- let parseResults =
- getParseResults
- """
-match x with
-| (head) :: (tail) -> ()
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Match(clauses = [
- SynMatchClause(pat = SynPat.ListCons(trivia = trivia))
- ])
- )
- ]) ])) ->
- assertRange (3, 9) (3, 11) trivia.ColonColonRange
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``Parentheses of SynArgPats.NamePatPairs`` () =
- let parseResults =
- getParseResults
- """
-match data with
-| OnePartData( // foo
- part1 = p1
- (* bar *) ) -> p1
-| _ -> failwith "todo"
-"""
-
- match parseResults with
- | ParsedInput.ImplFile (ParsedImplFileInput (contents = [ SynModuleOrNamespace.SynModuleOrNamespace(decls = [
- SynModuleDecl.Expr(
- expr = SynExpr.Match(clauses = [
- SynMatchClause(pat = SynPat.LongIdent(argPats = SynArgPats.NamePatPairs(trivia = trivia)))
- _
- ])
- )
- ]) ])) ->
- assertRange (3, 13) (5, 13) trivia.ParenRange
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
-
-[]
-let ``:: in head pattern`` () =
- let parseResults =
- getParseResults
- """
-let 1 :: _ = [ 4; 5; 6 ]
-"""
-
- match parseResults with
- | ParsedInput.ImplFile(ParsedImplFileInput(contents = [ SynModuleOrNamespace(decls = [
- SynModuleDecl.Let(bindings = [ SynBinding(headPat =
- SynPat.ListCons(trivia = trivia)) ])
- ]) ])) ->
- assertRange (2,6) (2, 8) trivia.ColonColonRange
- | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
diff --git a/tests/service/SyntaxTreeTests/SignatureTypeTests.fs b/tests/service/SyntaxTreeTests/SignatureTypeTests.fs
deleted file mode 100644
index d8a6857fbfb..00000000000
--- a/tests/service/SyntaxTreeTests/SignatureTypeTests.fs
+++ /dev/null
@@ -1,566 +0,0 @@
-module FSharp.Compiler.Service.Tests.SyntaxTreeTests.SignatureTypeTests
-
-open FSharp.Compiler.Service.Tests.Common
-open FSharp.Compiler.Syntax
-open FSharp.Compiler.SyntaxTrivia
-open NUnit.Framework
-
-[]
-let ``Range of Type should end at end keyword`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """namespace GreatProjectThing
-
-type Meh =
- class
- end
-
-
-// foo"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(decls = [SynModuleSigDecl.Types(range = r)]) ])) ->
- assertRange (3, 0) (5,11) r
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of SynTypeDefnSig record should end at last member`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """namespace X
-type MyRecord =
- { Level: int }
- member Score : unit -> int"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(decls = [SynModuleSigDecl.Types([SynTypeDefnSig.SynTypeDefnSig(range=mSynTypeDefnSig)], mTypes)]) ])) ->
- assertRange (2, 0) (4, 30) mTypes
- assertRange (2, 5) (4, 30) mSynTypeDefnSig
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of SynTypeDefnSig object model should end at last member`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """namespace X
-type MyRecord =
- class
- end
- member Score : unit -> int"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(decls = [SynModuleSigDecl.Types([SynTypeDefnSig.SynTypeDefnSig(range=mSynTypeDefnSig)], mTypes)]) ])) ->
- assertRange (2, 0) (5, 30) mTypes
- assertRange (2, 5) (5, 30) mSynTypeDefnSig
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of SynTypeDefnSig delegate of should start from name`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """namespace Y
-type MyFunction =
- delegate of int -> string"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(decls = [SynModuleSigDecl.Types([SynTypeDefnSig.SynTypeDefnSig(range=mSynTypeDefnSig)], mTypes) ]) ])) ->
- assertRange (2, 0) (3, 29) mTypes
- assertRange (2, 5) (3, 29) mSynTypeDefnSig
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of SynTypeDefnSig simple should end at last val`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """namespace Z
-type SomeCollection with
- val LastIndex : int
- val SomeThingElse : int -> string"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(decls = [SynModuleSigDecl.Types([SynTypeDefnSig.SynTypeDefnSig(range=mSynTypeDefnSig)], mTypes)]) ])) ->
- assertRange (2, 0) (4, 37) mTypes
- assertRange (2, 5) (4, 37) mSynTypeDefnSig
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in SynTypeDefnSig`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace SomeNamespace
-
-[]
-type MyType =
- class
- end
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(decls = [SynModuleSigDecl.Types(types = [SynTypeDefnSig.SynTypeDefnSig(range = r)]) as t]) ])) ->
- assertRange (4, 0) (7, 7) r
- assertRange (4, 0) (7, 7) t.Range
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attributes should be included in recursive types`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace SomeNamespace
-
-type Foo =
- | Bar
-
-and [] Bang =
- internal
- {
- LongNameBarBarBarBarBarBarBar: int
- }
- override GetHashCode : unit -> int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(decls = [SynModuleSigDecl.Types([
- SynTypeDefnSig.SynTypeDefnSig(range = r1)
- SynTypeDefnSig.SynTypeDefnSig(range = r2)
- ], mTypes)]) ])) ->
- assertRange (4, 5) (5, 9) r1
- assertRange (7, 4) (12, 42) r2
- assertRange (4, 0) (12, 42) mTypes
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``Range of attribute should be included in SynValSpfn and Member`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace SomeNamespace
-
-type FooType =
- [] // ValSpfn
- abstract x : int
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [
- SynModuleOrNamespaceSig(decls =
- [ SynModuleSigDecl.Types(types = [
- SynTypeDefnSig.SynTypeDefnSig(typeRepr =
- SynTypeDefnSigRepr.ObjectModel(memberSigs = [
- SynMemberSig.Member(range = mr; memberSig = SynValSig(range = mv)) ]))
- ]) ]) ])) ->
- assertRange (5, 4) (6, 20) mr
- assertRange (5, 4) (6, 20) mv
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynTypeDefnSig with ObjectModel Delegate contains the range of the equals sign`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace Foo
-
-type X = delegate of string -> string
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [ SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Types(
- types = [ SynTypeDefnSig(trivia = { EqualsRange = Some mEquals }
- typeRepr = SynTypeDefnSigRepr.ObjectModel(kind = SynTypeDefnKind.Delegate _)) ]
- )
- ]) ])) ->
- assertRange (4, 7) (4, 8) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[]
-let ``SynTypeDefnSig with ObjectModel class contains the range of the equals sign`` () =
- let parseResults =
- getParseResultsOfSignatureFile
- """
-namespace SomeNamespace
-
-type Foobar =
- class
- end
-"""
-
- match parseResults with
- | ParsedInput.SigFile (ParsedSigFileInput (contents = [ SynModuleOrNamespaceSig(decls = [
- SynModuleSigDecl.Types(
- types = [ SynTypeDefnSig(trivia = { EqualsRange = Some mEquals }
- typeRepr = SynTypeDefnSigRepr.ObjectModel(kind = SynTypeDefnKind.Class)) ]
- )
- ]) ])) ->
- assertRange (4, 12) (4, 13) mEquals
- | _ -> Assert.Fail "Could not get valid AST"
-
-[