diff --git a/src/Compiler/Checking/NicePrint.fs b/src/Compiler/Checking/NicePrint.fs index da4caaf7f2e..478733443fc 100644 --- a/src/Compiler/Checking/NicePrint.fs +++ b/src/Compiler/Checking/NicePrint.fs @@ -2502,7 +2502,7 @@ module InferredSigPrinting = else // OK, this is a nested module, with indentation if isEmptyL basic then - ((modNameEqualsL ^^ wordL (tagKeyword"begin")) @@* basic) @@ WordL.keywordEnd + modNameEqualsL ^^ wordL (tagKeyword "begin") @@* basic @@* WordL.keywordEnd else modNameEqualsL @@* basic layoutXmlDoc denv true mspec.XmlDoc basicL diff --git a/src/Compiler/FSComp.txt b/src/Compiler/FSComp.txt index 479e11ad05a..9fbb189a5bb 100644 --- a/src/Compiler/FSComp.txt +++ b/src/Compiler/FSComp.txt @@ -1574,6 +1574,7 @@ featureNestedCopyAndUpdate,"Nested record field copy-and-update" featureExtendedStringInterpolation,"Extended string interpolation similar to C# raw string literals." featureWarningWhenMultipleRecdTypeChoice,"Raises warnings when multiple record type matches were found during name resolution because of overlapping field names." featureImprovedImpliedArgumentNames,"Improved implied argument names" +featureStrictIndentation,"Raises errors on incorrect indentation, allows better recovery and analysis during editing" 3353,fsiInvalidDirective,"Invalid directive '#%s %s'" 3354,tcNotAFunctionButIndexerNamedIndexingNotYetEnabled,"This value supports indexing, e.g. '%s.[index]'. The syntax '%s[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." 3354,tcNotAFunctionButIndexerIndexingNotYetEnabled,"This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." @@ -1663,7 +1664,7 @@ reprStateMachineInvalidForm,"The state machine has an unexpected form" 3521,tcInvalidMemberDeclNameMissingOrHasParen,"Invalid member declaration. The name of the member is missing or has parentheses." 3522,tcAnonRecdDuplicateFieldId,"The field '%s' appears multiple times in this record expression." 3523,tcAnonRecdTypeDuplicateFieldId,"The field '%s' appears multiple times in this anonymous record type." -3524,parsExpectingExpressionInTuple,"Expecting expression" +3524,parsExpectingExpression,"Expecting expression" 3530,tcTraitIsStatic,"Trait '%s' is static" 3531,tcTraitIsNotStatic,"Trait '%s' is not static" 3532,tcTraitMayNotUseComplexThings,"A trait may not specify optional, in, out, ParamArray, CallerInfo or Quote arguments" diff --git a/src/Compiler/Facilities/LanguageFeatures.fs b/src/Compiler/Facilities/LanguageFeatures.fs index 45af383237b..9c44cf332b2 100644 --- a/src/Compiler/Facilities/LanguageFeatures.fs +++ b/src/Compiler/Facilities/LanguageFeatures.fs @@ -20,6 +20,7 @@ type LanguageFeature = | WildCardInForLoop | RelaxWhitespace | RelaxWhitespace2 + | StrictIndentation | NameOf | ImplicitYield | OpenTypeDeclaration @@ -163,6 +164,7 @@ type LanguageVersion(versionText) = LanguageFeature.WarningWhenMultipleRecdTypeChoice, previewVersion LanguageFeature.ImprovedImpliedArgumentNames, previewVersion LanguageFeature.DiagnosticForObjInference, previewVersion + LanguageFeature.StrictIndentation, previewVersion ] @@ -288,6 +290,7 @@ type LanguageVersion(versionText) = | LanguageFeature.WarningWhenMultipleRecdTypeChoice -> FSComp.SR.featureWarningWhenMultipleRecdTypeChoice () | LanguageFeature.ImprovedImpliedArgumentNames -> FSComp.SR.featureImprovedImpliedArgumentNames () | LanguageFeature.DiagnosticForObjInference -> FSComp.SR.featureInformationalObjInferenceDiagnostic () + | LanguageFeature.StrictIndentation -> FSComp.SR.featureStrictIndentation () /// Get a version string associated with the given feature. static member GetFeatureVersionString feature = diff --git a/src/Compiler/Facilities/LanguageFeatures.fsi b/src/Compiler/Facilities/LanguageFeatures.fsi index cef7a43a325..4f124a3324c 100644 --- a/src/Compiler/Facilities/LanguageFeatures.fsi +++ b/src/Compiler/Facilities/LanguageFeatures.fsi @@ -10,6 +10,7 @@ type LanguageFeature = | WildCardInForLoop | RelaxWhitespace | RelaxWhitespace2 + | StrictIndentation | NameOf | ImplicitYield | OpenTypeDeclaration diff --git a/src/Compiler/Facilities/prim-lexing.fs b/src/Compiler/Facilities/prim-lexing.fs index ac0566ab01a..af9816b8d22 100644 --- a/src/Compiler/Facilities/prim-lexing.fs +++ b/src/Compiler/Facilities/prim-lexing.fs @@ -154,6 +154,8 @@ type internal Position = member x.ApplyLineDirective(fileIdx, line) = Position(fileIdx, line, x.OriginalLine, x.AbsoluteOffset, x.AbsoluteOffset) + override p.ToString() = $"({p.Line},{p.Column})" + static member Empty = Position() static member FirstLine fileIdx = Position(fileIdx, 1, 0, 0, 0) diff --git a/src/Compiler/SyntaxTree/LexFilter.fs b/src/Compiler/SyntaxTree/LexFilter.fs index 270a9f3c96f..8952188b31b 100644 --- a/src/Compiler/SyntaxTree/LexFilter.fs +++ b/src/Compiler/SyntaxTree/LexFilter.fs @@ -431,6 +431,9 @@ type LexbufState(startPos: Position, member _.EndPos = endPos member _.PastEOF = pastEOF + override this.ToString() = + $"({this.StartPos}--{this.EndPos})" + /// Used to save the state related to a token /// Treat as though this is read-only. [] @@ -439,13 +442,19 @@ type TokenTup = val mutable Token : token val mutable LexbufState : LexbufState val mutable LastTokenPos: Position - new (token, state, lastTokenPos) = { Token=token; LexbufState=state;LastTokenPos=lastTokenPos } + + new (token, state, lastTokenPos) = + { Token = token; LexbufState = state;LastTokenPos = lastTokenPos } /// Returns starting position of the token member x.StartPos = x.LexbufState.StartPos + /// Returns end position of the token member x.EndPos = x.LexbufState.EndPos - + + override this.ToString() = + $"{this.Token} ({this.StartPos}--{this.EndPos})" + type TokenTupPool() = /// Arbitrary. @@ -694,8 +703,14 @@ type LexFilterImpl ( offsideStack <- (CtxtSeqBlock(FirstInSeqBlock, startPosOfTokenTup initialLookaheadTokenTup, NoAddBlockEnd)) :: offsideStack initialLookaheadTokenTup + let reportDiagnostic reportF (s: TokenTup) msg = + reportF (IndentationProblem(msg, mkSynRange (startPosOfTokenTup s) s.LexbufState.EndPos)) + let warn (s: TokenTup) msg = - warning(IndentationProblem(msg, mkSynRange (startPosOfTokenTup s) s.LexbufState.EndPos)) + reportDiagnostic warning s msg + + let error (s: TokenTup) msg = + reportDiagnostic errorR s msg // 'query { join x in ys ... }' // 'query { ... @@ -720,10 +735,11 @@ type LexFilterImpl ( //-------------------------------------------------------------------------- let relaxWhitespace2 = lexbuf.SupportsFeature LanguageFeature.RelaxWhitespace2 + let strictIndentation = lexbuf.SupportsFeature LanguageFeature.StrictIndentation //let indexerNotationWithoutDot = lexbuf.SupportsFeature LanguageFeature.IndexerNotationWithoutDot - let pushCtxt tokenTup (newCtxt: Context) = + let tryPushCtxt strict tokenTup (newCtxt: Context) = let rec undentationLimit strict stack = match newCtxt, stack with | _, [] -> PositionWithColumn(newCtxt.StartPos, -1) @@ -935,26 +951,39 @@ type LexFilterImpl ( // These contexts can have their contents exactly aligning | _, (CtxtParen _ | CtxtFor _ | CtxtWhen _ | CtxtWhile _ | CtxtTypeDefns _ | CtxtMatch _ | CtxtModuleBody (_, true) | CtxtNamespaceBody _ | CtxtTry _ | CtxtMatchClauses _ | CtxtSeqBlock _ as limitCtxt :: _) -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) + + let isCorrectIndent = + match newCtxt with + // Don't bother to check pushes of Vanilla blocks since we've + // always already pushed a SeqBlock at this position. + | CtxtVanilla _ + // String interpolation inner expressions are not limited (e.g. multiline strings) + | CtxtParen((INTERP_STRING_BEGIN_PART _ | INTERP_STRING_PART _),_) -> true + | _ -> + let p1 = undentationLimit true offsideStack + let c2 = newCtxt.StartCol + let isCorrectIndent = c2 >= p1.Column + + if not isCorrectIndent then + let warnF = if strictIndentation then error else warn + warnF tokenTup + (if debug then + sprintf "possible incorrect indentation: this token is offside of context at position %s, newCtxt = %A, stack = %A, newCtxtPos = %s, c1 = %d, c2 = %d" + (warningStringOfPosition p1.Position) newCtxt offsideStack (stringOfPos newCtxt.StartPos) p1.Column c2 + else + FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPosition p1.Position)) + + isCorrectIndent + + if strict && not isCorrectIndent then false else - match newCtxt with - // Don't bother to check pushes of Vanilla blocks since we've - // always already pushed a SeqBlock at this position. - | CtxtVanilla _ - // String interpolation inner expressions are not limited (e.g. multiline strings) - | CtxtParen((INTERP_STRING_BEGIN_PART _ | INTERP_STRING_PART _),_) -> () - | _ -> - let p1 = undentationLimit true offsideStack - let c2 = newCtxt.StartCol - if c2 < p1.Column then - warn tokenTup - (if debug then - sprintf "possible incorrect indentation: this token is offside of context at position %s, newCtxt = %A, stack = %A, newCtxtPos = %s, c1 = %d, c2 = %d" - (warningStringOfPosition p1.Position) newCtxt offsideStack (stringOfPos newCtxt.StartPos) p1.Column c2 - else - FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPosition p1.Position)) let newOffsideStack = newCtxt :: offsideStack if debug then dprintf "--> pushing, stack = %A\n" newOffsideStack offsideStack <- newOffsideStack + true + + let pushCtxt tokenTup newCtxt = + tryPushCtxt false tokenTup newCtxt |> ignore let rec popCtxt() = match offsideStack with @@ -1523,7 +1552,7 @@ type LexFilterImpl ( // ^---------INTERP_STRING_PART | INTERP_STRING_PART _ -> pushCtxt tokenTup (CtxtParen (token, tokenTup.LexbufState.EndPos)) - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd | _ -> // Queue a dummy token at this position to check if any closing rules apply delayToken(pool.UseLocation(tokenTup, ODUMMY token)) @@ -1557,7 +1586,7 @@ type LexFilterImpl ( | _ -> delayToken tokenTup pushCtxt tokenTup (CtxtNamespaceBody namespaceTokenPos) - pushCtxtSeqBlockAt (tokenTup, true, AddBlockEnd) + pushCtxtSeqBlockAt false tokenTup tokenTup AddBlockEnd hwTokenFetch false // Transition rule. CtxtModuleHead ~~~> push CtxtModuleBody; push CtxtSeqBlock @@ -1588,7 +1617,7 @@ type LexFilterImpl ( if debug then dprintf "CtxtModuleHead: COLON/EQUALS, pushing CtxtModuleBody and CtxtSeqBlock\n" popCtxt() pushCtxt tokenTup (CtxtModuleBody (moduleTokenPos, false)) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token | _ -> match rest with @@ -1603,7 +1632,7 @@ type LexFilterImpl ( // We have reached other tokens without encountering '=' or ':', so this is a module declaration spanning the whole file delayToken tokenTup pushCtxt tokenTup (CtxtModuleBody (moduleTokenPos, true)) - pushCtxtSeqBlockAt (tokenTup, true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd hwTokenFetch false | _ -> // Adding a new nested module, EQUALS hasn't been typed yet @@ -2029,18 +2058,18 @@ type LexFilterImpl ( // 'let ... = ' ~~~> CtxtSeqBlock | EQUALS, CtxtLetDecl _ :: _ -> if debug then dprintf "CtxtLetDecl: EQUALS, pushing CtxtSeqBlock\n" - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token | EQUALS, CtxtTypeDefns _ :: _ -> if debug then dprintf "CtxType: EQUALS, pushing CtxtSeqBlock\n" - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token | (LAZY | ASSERT), _ -> if isControlFlowOrNotSameLine() then if debug then dprintf "LAZY/ASSERT, pushing CtxtSeqBlock\n" - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState (match token with LAZY -> OLAZY | _ -> OASSERT) else returnToken tokenLexbufState token @@ -2066,9 +2095,9 @@ type LexFilterImpl ( // These have a syntactically odd status because of the use of ";" to terminate expressions, so each *) // "=" binding is not properly balanced by "in" or "and" tokens in the single line syntax (unlike other bindings) *) if isControlFlowOrNotSameLine() then - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd else - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState token // 'new(... =' ~~~> CtxtMemberBody, CtxtSeqBlock @@ -2079,7 +2108,7 @@ type LexFilterImpl ( | EQUALS, CtxtMemberHead offsidePos :: _ -> if debug then dprintf "CtxtMemberHead: EQUALS, pushing CtxtSeqBlock\n" replaceCtxt tokenTup (CtxtMemberBody offsidePos) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token // '(' tokens are balanced with ')' tokens and also introduce a CtxtSeqBlock @@ -2092,7 +2121,7 @@ type LexFilterImpl ( | INTERP_STRING_BEGIN_PART _ -> tokenTup.LexbufState.EndPos | _ -> tokenStartPos pushCtxt tokenTup (CtxtParen (token, pos)) - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState token // '(' tokens are balanced with ')' tokens and also introduce a CtxtSeqBlock @@ -2106,7 +2135,7 @@ type LexFilterImpl ( | _ -> false) (* type X<'a when 'a : struct> *) -> if debug then dprintf "LPAREN etc., pushes CtxtParen, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtParen (token, tokenStartPos)) - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState token | RARROW, ctxts @@ -2120,19 +2149,19 @@ type LexFilterImpl ( | CtxtSeqBlock _ :: (CtxtDo _ | CtxtWhile _ | CtxtFor _ | CtxtWhen _ | CtxtMatchClauses _ | CtxtTry _ | CtxtThen _ | CtxtElse _) :: _ -> true | _ -> false) -> if debug then dprintf "RARROW, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos - pushCtxtSeqBlock(false, AddOneSidedBlockEnd) + pushCtxtSeqBlock tokenTup AddOneSidedBlockEnd returnToken tokenLexbufState token | LARROW, _ when isControlFlowOrNotSameLine() -> if debug then dprintf "LARROW, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token // do ~~> CtxtDo;CtxtSeqBlock (unconditionally) | (DO | DO_BANG), _ -> if debug then dprintf "DO: pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtDo tokenStartPos) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState (match token with DO -> ODO | DO_BANG -> ODO_BANG | _ -> failwith "unreachable") // The r.h.s. of an infix token begins a new block. @@ -2149,20 +2178,22 @@ type LexFilterImpl ( (match ctxts with CtxtMatchClauses _ :: _ -> false | _ -> true)) -> if debug then dprintf "(Infix etc.), pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState token | WITH, (CtxtTry _ | CtxtMatch _) :: _ -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup let leadingBar = match (peekNextToken()) with BAR -> true | _ -> false + if debug then dprintf "WITH, pushing CtxtMatchClauses, lookaheadTokenStartPos = %a, tokenStartPos = %a\n" outputPos lookaheadTokenStartPos outputPos tokenStartPos - pushCtxt lookaheadTokenTup (CtxtMatchClauses(leadingBar, lookaheadTokenStartPos)) + tryPushCtxt strictIndentation lookaheadTokenTup (CtxtMatchClauses(leadingBar, lookaheadTokenStartPos)) |> ignore + returnToken tokenLexbufState OWITH | FINALLY, CtxtTry _ :: _ -> if debug then dprintf "FINALLY, pushing pushCtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token | WITH, (CtxtException _ | CtxtTypeDefns _ | CtxtMemberHead _ | CtxtInterfaceHead _ | CtxtMemberBody _ as limCtxt) :: _ @@ -2224,7 +2255,7 @@ type LexFilterImpl ( res if isFollowedByLongIdentEquals then - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState OWITH | _ -> @@ -2262,14 +2293,14 @@ type LexFilterImpl ( let offsidePos = limCtxt.StartPos pushCtxt tokenTup (CtxtWithAsAugment offsidePos) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token | WITH, stack -> if debug then dprintf "WITH\n" if debug then dprintf "WITH --> NO MATCH, pushing CtxtWithAsAugment (type augmentation), stack = %A" stack pushCtxt tokenTup (CtxtWithAsAugment tokenStartPos) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token | FUNCTION, _ -> @@ -2283,7 +2314,7 @@ type LexFilterImpl ( | THEN, _ -> if debug then dprintf "THEN, replacing THEN with OTHEN, pushing CtxtSeqBlock;CtxtThen(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtThen tokenStartPos) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState OTHEN | ELSE, _ -> @@ -2306,7 +2337,7 @@ type LexFilterImpl ( | _ -> if debug then dprintf "ELSE: replacing ELSE with OELSE, pushing CtxtSeqBlock, CtxtElse(%a)\n" outputPos lookaheadTokenStartPos pushCtxt tokenTup (CtxtElse tokenStartPos) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState OELSE | (ELIF | IF), _ -> @@ -2347,7 +2378,7 @@ type LexFilterImpl ( | DEFAULT | OVERRIDE | INTERFACE | NEW | TYPE | STATIC | END | MEMBER | ABSTRACT | INHERIT | LBRACK_LESS -> if debug then dprintf "INTERFACE, pushing CtxtParen, tokenStartPos = %a, lookaheadTokenStartPos = %a\n" outputPos tokenStartPos outputPos lookaheadTokenStartPos pushCtxt tokenTup (CtxtParen (token, tokenStartPos)) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token // type C with interface .... with // type C = interface .... with @@ -2359,7 +2390,7 @@ type LexFilterImpl ( | CLASS, _ -> if debug then dprintf "CLASS, pushing CtxtParen(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtParen (token, tokenStartPos)) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token | TYPE, _ -> @@ -2377,7 +2408,7 @@ type LexFilterImpl ( // WITH is used in the grammar (see what happens when we hit a WITH below. // This hits in the single line case: "try make ef1 t with _ -> make ef2 t". - pushCtxtSeqBlock(false, AddOneSidedBlockEnd) + pushCtxtSeqBlock tokenTup AddOneSidedBlockEnd returnToken tokenLexbufState token | OBLOCKBEGIN, _ -> @@ -2529,12 +2560,25 @@ type LexFilterImpl ( | _ -> false - and pushCtxtSeqBlock(addBlockBegin, addBlockEnd) = pushCtxtSeqBlockAt (peekNextTokenTup(), addBlockBegin, addBlockEnd) - and pushCtxtSeqBlockAt(p: TokenTup, addBlockBegin, addBlockEnd) = + and pushCtxtSeqBlock fallbackToken addBlockEnd = + pushCtxtSeqBlockAt strictIndentation fallbackToken (peekNextTokenTup()) addBlockEnd + + and pushCtxtSeqBlockAt strict (fallbackToken: TokenTup) (tokenTup: TokenTup) addBlockEnd = + let pushed = tryPushCtxt strict tokenTup (CtxtSeqBlock(FirstInSeqBlock, startPosOfTokenTup tokenTup, addBlockEnd)) + if not pushed then + // The upcoming token isn't sufficiently indented to start the new context. + // The parser expects proper contexts structure, so we push a new recovery context at the fallback token position. + pushCtxt fallbackToken (CtxtSeqBlock(NotFirstInSeqBlock, startPosOfTokenTup fallbackToken, addBlockEnd)) + + let addBlockBegin = + match addBlockEnd with + | AddBlockEnd -> true + | _ -> false + if addBlockBegin then if debug then dprintf "--> insert OBLOCKBEGIN \n" - delayToken(pool.UseLocation(p, OBLOCKBEGIN)) - pushCtxt p (CtxtSeqBlock(FirstInSeqBlock, startPosOfTokenTup p, addBlockEnd)) + let ctxtToken = if pushed then tokenTup else fallbackToken + delayToken(pool.UseLocation(ctxtToken, OBLOCKBEGIN)) let rec swTokenFetch() = let tokenTup = popNextTokenTup() diff --git a/src/Compiler/pars.fsy b/src/Compiler/pars.fsy index 9784dee0c33..076627536dc 100644 --- a/src/Compiler/pars.fsy +++ b/src/Compiler/pars.fsy @@ -1727,7 +1727,9 @@ classDefnMembersAtLeastOne: | classDefnMember opt_seps classDefnMembers { match $1, $3 with | [ SynMemberDefn.Interface(members=Some []; range=m) ], nextMember :: _ -> - warning(IndentationProblem(FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPos m.Start), nextMember.Range)) + let strictIndentation = parseState.LexBuffer.SupportsFeature LanguageFeature.StrictIndentation + let warnF = if strictIndentation then errorR else warning + warnF(IndentationProblem(FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPos m.Start), nextMember.Range)) | _ -> () $1 @ $3 } @@ -2712,8 +2714,7 @@ hardwhiteDoBinding: | ODO typedSequentialExprBlock hardwhiteDefnBindingsTerminator { let mDo = rhs parseState 1 let _, _, mDone = $3 - let mEnd = match mDone with Some m -> m | _ -> $2.Range - let mAll = unionRanges mDo mEnd + let mAll = unionRanges mDo $2.Range let seqPt = DebugPointAtBinding.NoneAtDo // any attributes prior to the 'let' are left free, e.g. become top-level attributes // associated with the module, 'main' function or assembly depending on their target @@ -3531,6 +3532,11 @@ typedSequentialExprBlock: { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression()) exprFromParseError $2 } + | OBLOCKBEGIN oblockend + { let m = rhs parseState 1 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + arbExpr ("typedSequentialExprBlock1", m.EndRange) } + | typedSequentialExpr { $1 } @@ -3539,6 +3545,11 @@ declExprBlock: | OBLOCKBEGIN typedSequentialExpr oblockend { $2 } + | OBLOCKBEGIN oblockend + { let m = rhs parseState 1 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + arbExpr ("declExprBlock1", m.EndRange) } + | declExpr { $1 } @@ -3552,7 +3563,7 @@ typedSequentialExprBlockR: { fun _ -> $1 } | recover - { fun mStart -> arbExpr ("typedSequentialExprBlockR", mStart) } + { fun (mStart: range) -> arbExpr ("typedSequentialExprBlockR1", mStart.EndRange) } typedSequentialExpr: | sequentialExpr COLON typeWithTypeConstraints @@ -3656,7 +3667,7 @@ declExpr: | hardwhiteDoBinding %prec expr_let { let (BindingSetPreAttrs(_, _, _, _, m)), e = $1 - SynExpr.Do(e, m) } + SynExpr.Do(e, unionRanges (rhs parseState 1).StartRange e.Range) } | anonMatchingExpr %prec expr_function { $1 } @@ -3720,6 +3731,42 @@ declExpr: WithToEndRange = mWhole } SynExpr.TryWith(expr, [], mWhole, spTry, spWith, trivia) } + | TRY ORIGHT_BLOCK_END %prec expr_try + { let mTry = rhs parseState 1 + let mExpr = mTry.EndRange + let expr = arbExpr ("try1", mExpr) + let spTry = DebugPointAtTry.Yes mTry + let mWith, (clauses, mLast) = mExpr, ([], mExpr) + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + let spWith = DebugPointAtWith.Yes mWith + let mTryToWith = unionRanges mTry mWith + let mWithToLast = unionRanges mWith mLast + let mTryToLast = unionRanges mTry mLast + let trivia: SynExprTryWithTrivia = + { TryKeyword = mTry + TryToWithRange = mTryToWith + WithKeyword = mWith + WithToEndRange = mWithToLast } + SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) } + + | TRY ORIGHT_BLOCK_END withClauses %prec expr_try + { let mTry = rhs parseState 1 + let mExpr = mTry.EndRange + let expr = arbExpr ("try2", mExpr) + let spTry = DebugPointAtTry.Yes mTry + let mWith, (clauses, mLast) = $3 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + let spWith = DebugPointAtWith.Yes mWith + let mTryToWith = unionRanges mTry mWith + let mWithToLast = unionRanges mWith mLast + let mTryToLast = unionRanges mTry mLast + let trivia: SynExprTryWithTrivia = + { TryKeyword = mTry + TryToWithRange = mTryToWith + WithKeyword = mWith + WithToEndRange = mWithToLast } + SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) } + | TRY typedSequentialExprBlockR FINALLY typedSequentialExprBlock %prec expr_try { let mTry = rhs parseState 1 let tryExpr = $2 mTry @@ -4233,6 +4280,11 @@ withClauses: { if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWith()) rhs parseState 1, $2 } + | OWITH recover + { let mWith = rhs parseState 1 + if not $2 then reportParseErrorAt mWith (FSComp.SR.parsUnexpectedEndOfFileWith ()) + mWith, ([], mWith.EndRange) } + withPatternClauses: | patternClauses { $1 None } @@ -4338,21 +4390,13 @@ ifExprThen: { let mThen = rhs parseState 1 arbExpr ("ifThen1", mThen.EndRange), mThen } - | OTHEN OBLOCKBEGIN typedSequentialExpr oblockend %prec prec_then_if - { $3, rhs parseState 1 } - - | OTHEN OBLOCKBEGIN typedSequentialExpr recover %prec prec_then_if - { if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileThen()) - exprFromParseError $3, rhs parseState 1 } + | OTHEN typedSequentialExprBlock %prec prec_then_if + { $2, rhs parseState 1 } | OTHEN recover %prec prec_then_if { let mThen = rhs parseState 1 arbExpr ("ifThen2", mThen.EndRange), mThen } - | OTHEN OBLOCKBEGIN recover %prec prec_then_if - { let mThen = rhs parseState 1 - arbExpr ("ifThen3", mThen.EndRange), mThen } - ifExprElifs: | /* EMPTY */ { None, None } @@ -4361,14 +4405,9 @@ ifExprElifs: { let mElse = rhs parseState 1 Some mElse, Some $2 } - | OELSE OBLOCKBEGIN typedSequentialExpr oblockend - { let mElse = rhs parseState 1 - Some mElse, Some $3 } - - | OELSE OBLOCKBEGIN typedSequentialExpr recover + | OELSE typedSequentialExprBlock { let mElse = rhs parseState 1 - if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileElse()) - Some mElse, Some(exprFromParseError $3) } + Some mElse, Some $2 } | ELIF declExpr ifExprCases { let mElif = rhs parseState 1 @@ -4400,7 +4439,7 @@ tupleExpr: { let exprs, commas = $1 let mComma1 = rhs parseState 2 let mComma2 = rhs parseState 3 - reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpressionInTuple ()) + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) let expr = arbExpr ("tupleExpr2", mComma1.EndRange) $4 :: expr :: exprs, (mComma2 :: mComma1 :: commas) } @@ -4408,7 +4447,7 @@ tupleExpr: { let exprs, commas = $1 let mComma1 = rhs parseState 2 let mComma2 = rhs parseState 3 - reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpressionInTuple ()) + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) if not $4 then reportParseErrorAt mComma2 (FSComp.SR.parsExpectedExpressionAfterToken ()) let expr1 = arbExpr ("tupleExpr3", mComma1.EndRange) let expr2 = arbExpr ("tupleExpr4", mComma2.EndRange) @@ -4425,7 +4464,7 @@ tupleExpr: | declExpr COMMA COMMA ends_coming_soon_or_recover { let mComma1 = rhs parseState 2 let mComma2 = rhs parseState 3 - reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpressionInTuple ()) + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) if not $4 then reportParseErrorAt mComma2 (FSComp.SR.parsExpectedExpressionAfterToken ()) let expr1 = arbExpr ("tupleExpr6", mComma1.EndRange) let expr2 = arbExpr ("tupleExpr7", mComma2.EndRange) @@ -4434,7 +4473,7 @@ tupleExpr: | declExpr COMMA COMMA declExpr { let mComma1 = rhs parseState 2 let mComma2 = rhs parseState 3 - reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpressionInTuple ()) + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) let expr = arbExpr ("tupleExpr8", mComma1.EndRange) [$4; expr; $1], [mComma2; mComma1] } diff --git a/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/Compiler/xlf/FSComp.txt.cs.xlf index 13c9dd9295f..7a5e3eb5766 100644 --- a/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -407,6 +407,11 @@ Statické členy v rozhraních + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolace řetězce @@ -792,9 +797,9 @@ Za tímto bodem byl očekáván vzor - + Expecting expression - Byl očekáván výraz. + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.de.xlf b/src/Compiler/xlf/FSComp.txt.de.xlf index 743c472a650..0b160bf595a 100644 --- a/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/Compiler/xlf/FSComp.txt.de.xlf @@ -407,6 +407,11 @@ Statische Member in Schnittstellen + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation Zeichenfolgeninterpolation @@ -792,9 +797,9 @@ Nach diesem Punkt wurde ein Muster erwartet. - + Expecting expression - Ausdruck wird erwartet + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.es.xlf b/src/Compiler/xlf/FSComp.txt.es.xlf index d61df64ef38..39363fc73ee 100644 --- a/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/Compiler/xlf/FSComp.txt.es.xlf @@ -407,6 +407,11 @@ Miembros estáticos en interfaces + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolación de cadena @@ -792,9 +797,9 @@ Se esperaba un patrón después de este punto - + Expecting expression - Se espera una expresión + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/Compiler/xlf/FSComp.txt.fr.xlf index d576058a3e1..7b4d5fd330f 100644 --- a/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -407,6 +407,11 @@ Membres statiques dans les interfaces + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolation de chaîne @@ -792,9 +797,9 @@ Modèle attendu après ce point - + Expecting expression - Expression attendue + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.it.xlf b/src/Compiler/xlf/FSComp.txt.it.xlf index 67ddd7e0fdc..454e90b5072 100644 --- a/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/Compiler/xlf/FSComp.txt.it.xlf @@ -407,6 +407,11 @@ Membri statici nelle interfacce + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolazione di stringhe @@ -792,9 +797,9 @@ Previsto un criterio dopo questa posizione - + Expecting expression - Prevista espressione. + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/Compiler/xlf/FSComp.txt.ja.xlf index 3f8ad74f8a7..3eabcd55f92 100644 --- a/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -407,6 +407,11 @@ インターフェイス内の静的メンバー + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation 文字列の補間 @@ -792,9 +797,9 @@ このポイントの後にパターンが必要です - + Expecting expression - 式を指定してください + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/Compiler/xlf/FSComp.txt.ko.xlf index 6a17a61364a..2a83010b57d 100644 --- a/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -407,6 +407,11 @@ 인터페이스의 정적 멤버 + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation 문자열 보간 @@ -792,9 +797,9 @@ 이 지점 뒤에 패턴이 필요합니다. - + Expecting expression - 식이 필요함 + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/Compiler/xlf/FSComp.txt.pl.xlf index dd3877c8a43..b4014e49549 100644 --- a/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -407,6 +407,11 @@ Statyczne składowe w interfejsach + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolacja ciągu @@ -792,9 +797,9 @@ Oczekiwano wzorca po tym punkcie - + Expecting expression - Oczekiwanie na wyrażenie + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index a282f140ab2..86f6151faeb 100644 --- a/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -407,6 +407,11 @@ Membros estáticos em interfaces + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolação da cadeia de caracteres @@ -792,9 +797,9 @@ Um padrão é esperado após este ponto - + Expecting expression - Esperando uma expressão + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/Compiler/xlf/FSComp.txt.ru.xlf index 426b61eaeb1..e5b6a87be6b 100644 --- a/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -407,6 +407,11 @@ Статические элементы в интерфейсах + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation интерполяция строк @@ -792,9 +797,9 @@ После этой точки ожидался шаблон - + Expecting expression - Ожидается выражение + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/Compiler/xlf/FSComp.txt.tr.xlf index 67e127a9055..0761e71e256 100644 --- a/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -407,6 +407,11 @@ Arabirimlerdeki statik üyeler + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation dizede düz metin arasına kod ekleme @@ -792,9 +797,9 @@ Bu noktadan sonra bir desen bekleniyordu - + Expecting expression - İfade bekleniyor + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 7660508a935..a0d8593a5c3 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -407,6 +407,11 @@ 接口中的静态成员 + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation 字符串内插 @@ -792,9 +797,9 @@ 此点之后应有一个模式 - + Expecting expression - 应为表达式 + Expecting expression diff --git a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index 3a1c92ff8f1..cbb928c67bc 100644 --- a/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -407,6 +407,11 @@ 介面中的靜態成員 + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation 字串內插補點 @@ -792,9 +797,9 @@ 在這個點之後必須有模式 - + Expecting expression - 必須是運算式 + Expecting expression diff --git a/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock01.fs b/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock01.fs index 97e9715a648..97be20d2de7 100644 --- a/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock01.fs +++ b/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock01.fs @@ -1,6 +1,6 @@ // #Regression #Diagnostics // Regression test for FSharp1.0:2237 -//Incomplete structured construct at or before this point in expression$ +//Expecting expression diff --git a/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock02.fs b/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock02.fs index 57e153cc93a..29faaaac86c 100644 --- a/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock02.fs +++ b/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock02.fs @@ -1,6 +1,6 @@ // #Regression #Diagnostics // Regression test for FSharp1.0:2237 -// +//Expecting expression #light diff --git a/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock02b.fs b/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock02b.fs index 704409444c3..46f483d1f78 100644 --- a/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock02b.fs +++ b/tests/fsharpqa/Source/Diagnostics/NONTERM/typedSeqExprBlock02b.fs @@ -1,7 +1,7 @@ // #Regression #Diagnostics // Regression test for FSharp1.0:2237 //NONTERM -// +//Expecting expression let f = 1 diff --git a/tests/service/data/SyntaxTree/Expression/Binary - Plus 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Binary - Plus 02.fs.bsl index 6f28e14086a..65ccd2d4e20 100644 --- a/tests/service/data/SyntaxTree/Expression/Binary - Plus 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Binary - Plus 02.fs.bsl @@ -21,5 +21,5 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. (3,2)-(3,3) parse error Unexpected token '+' or incomplete expression diff --git a/tests/service/data/SyntaxTree/Expression/Binary - Plus 05.fs b/tests/service/data/SyntaxTree/Expression/Binary - Plus 05.fs new file mode 100644 index 00000000000..e0a97747891 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Binary - Plus 05.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + a + + +() diff --git a/tests/service/data/SyntaxTree/Expression/Binary - Plus 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/Binary - Plus 05.fs.bsl new file mode 100644 index 00000000000..cf11125c6d9 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Binary - Plus 05.fs.bsl @@ -0,0 +1,36 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Binary - Plus 05.fs", false, QualifiedNameOfFile Module, + [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + App + (NonAtomic, false, + App + (NonAtomic, true, + LongIdent + (false, + SynLongIdent + ([op_Addition], [], [Some (OriginalNotation "+")]), + None, (4,6--4,7)), Ident a, (4,4--4,7)), + ArbitraryAfterError ("declExprInfixPlusMinus", (4,7--4,7)), + (4,4--4,7)), (3,4--3,5), Yes (3,0--4,7), + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--4,7)); + Expr (Const (Unit, (6,0--6,2)), (6,0--6,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(4,6)-(4,7) parse error Unexpected token '+' or incomplete expression diff --git a/tests/service/data/SyntaxTree/Expression/Do 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Do 02.fs.bsl index a1c56a5016b..b3cfba16181 100644 --- a/tests/service/data/SyntaxTree/Expression/Do 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Do 02.fs.bsl @@ -3,7 +3,7 @@ ImplFile ("/root/Expression/Do 02.fs", false, QualifiedNameOfFile Module, [], [], [SynModuleOrNamespace ([Module], false, NamedModule, - [Expr (Do (Const (Int32 1, (4,4--4,5)), (3,0--5,4)), (3,0--5,4)); + [Expr (Do (Const (Int32 1, (4,4--4,5)), (3,0--4,5)), (3,0--4,5)); Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), diff --git a/tests/service/data/SyntaxTree/Expression/Do 03.fs b/tests/service/data/SyntaxTree/Expression/Do 03.fs new file mode 100644 index 00000000000..b7550c77809 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Do 03.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + do + +1 diff --git a/tests/service/data/SyntaxTree/Expression/Do 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Do 03.fs.bsl new file mode 100644 index 00000000000..f60cb8f91f9 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Do 03.fs.bsl @@ -0,0 +1,27 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Do 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + Do + (ArbitraryAfterError + ("typedSequentialExprBlock1", (4,6--4,6)), (4,4--4,6)), + (3,4--3,5), Yes (3,0--4,6), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--4,6)); Expr (Const (Int32 1, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(6,0)-(6,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Do 04.fs b/tests/service/data/SyntaxTree/Expression/Do 04.fs new file mode 100644 index 00000000000..986386747c3 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Do 04.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + do + 1 + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Do 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/Do 04.fs.bsl new file mode 100644 index 00000000000..7edad619273 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Do 04.fs.bsl @@ -0,0 +1,22 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Do 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + Do (Const (Int32 1, (5,8--5,9)), (4,4--5,9)), (3,4--3,5), + Yes (3,0--5,9), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--5,9)); Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Do 05.fs b/tests/service/data/SyntaxTree/Expression/Do 05.fs new file mode 100644 index 00000000000..f5e659ea32c --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Do 05.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + do + 1 + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Do 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/Do 05.fs.bsl new file mode 100644 index 00000000000..8707692afc7 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Do 05.fs.bsl @@ -0,0 +1,22 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Do 05.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + Do (Const (Int32 1, (5,4--5,5)), (4,4--5,5)), (3,4--3,5), + Yes (3,0--5,5), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--5,5)); Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Downcast 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Downcast 01.fs.bsl index 0180c738f8b..858ed65a2ab 100644 --- a/tests/service/data/SyntaxTree/Expression/Downcast 01.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Downcast 01.fs.bsl @@ -12,5 +12,5 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. (4,0)-(4,0) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/For 03.fs b/tests/service/data/SyntaxTree/Expression/For 03.fs new file mode 100644 index 00000000000..c678fff979b --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/For 03.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + for _ in 1 do + +3 diff --git a/tests/service/data/SyntaxTree/Expression/For 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/For 03.fs.bsl new file mode 100644 index 00000000000..2c93eb12bb1 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/For 03.fs.bsl @@ -0,0 +1,29 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/For 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + ForEach + (Yes (4,4--4,7), Yes (4,10--4,12), SeqExprOnly false, true, + Wild (4,8--4,9), Const (Int32 1, (4,13--4,14)), + ArbitraryAfterError + ("typedSequentialExprBlock1", (4,17--4,17)), (4,4--4,17)), + (3,4--3,5), NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--4,17)); Expr (Const (Int32 3, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(6,0)-(6,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/For 04.fs b/tests/service/data/SyntaxTree/Expression/For 04.fs new file mode 100644 index 00000000000..fe963dd183d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/For 04.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + for _ in 1 do + 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/For 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/For 04.fs.bsl new file mode 100644 index 00000000000..41ed392a753 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/For 04.fs.bsl @@ -0,0 +1,25 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/For 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + ForEach + (Yes (4,4--4,7), Yes (4,10--4,12), SeqExprOnly false, true, + Wild (4,8--4,9), Const (Int32 1, (4,13--4,14)), + Const (Int32 2, (5,8--5,9)), (4,4--5,9)), (3,4--3,5), + NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,9)); + Expr (Const (Int32 3, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/For 05.fs b/tests/service/data/SyntaxTree/Expression/For 05.fs new file mode 100644 index 00000000000..10cc0ed8b74 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/For 05.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + for _ in 1 do + 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/For 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/For 05.fs.bsl new file mode 100644 index 00000000000..9a71d8f9e4c --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/For 05.fs.bsl @@ -0,0 +1,25 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/For 05.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + ForEach + (Yes (4,4--4,7), Yes (4,10--4,12), SeqExprOnly false, true, + Wild (4,8--4,9), Const (Int32 1, (4,13--4,14)), + Const (Int32 2, (5,4--5,5)), (4,4--5,5)), (3,4--3,5), + NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,5)); + Expr (Const (Int32 3, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/If 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/If 05.fs.bsl index b04b2f73abb..746fb751f18 100644 --- a/tests/service/data/SyntaxTree/Expression/If 05.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/If 05.fs.bsl @@ -5,17 +5,19 @@ ImplFile ([Module], false, NamedModule, [Expr (IfThenElse - (Const (Bool true, (3,3--3,7)), Const (Unit, (5,0--5,2)), None, - Yes (3,0--3,12), false, (3,0--5,2), + (Const (Bool true, (3,3--3,7)), + ArbitraryAfterError ("typedSequentialExprBlock1", (3,12--3,12)), + None, Yes (3,0--3,12), false, (3,0--3,12), { IfKeyword = (3,0--3,2) IsElif = false ThenKeyword = (3,8--3,12) ElseKeyword = None - IfToThenRange = (3,0--3,12) }), (3,0--5,2))], + IfToThenRange = (3,0--3,12) }), (3,0--3,12)); + Expr (Const (Unit, (5,0--5,2)), (5,0--5,2))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--5,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), { ConditionalDirectives = [] CodeComments = [] }, set [])) -(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. -(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/If 06.fs.bsl b/tests/service/data/SyntaxTree/Expression/If 06.fs.bsl index 9eb34c95351..925db41268a 100644 --- a/tests/service/data/SyntaxTree/Expression/If 06.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/If 06.fs.bsl @@ -7,20 +7,23 @@ ImplFile (Do (IfThenElse (Const (Bool true, (4,7--4,11)), - ArbitraryAfterError ("ifThen3", (4,16--4,16)), None, + ArbitraryAfterError + ("typedSequentialExprBlock1", (4,16--4,16)), None, Yes (4,4--4,16), false, (4,4--4,16), { IfKeyword = (4,4--4,6) IsElif = false ThenKeyword = (4,12--4,16) ElseKeyword = None - IfToThenRange = (4,4--4,16) }), (3,0--4,16)), (3,0--4,16))], + IfToThenRange = (4,4--4,16) }), (3,0--4,16)), (3,0--4,16)); + Open + (ModuleOrNamespace + (SynLongIdent + ([`global`], [], [Some (OriginalNotation "global")]), + (6,5--6,11)), (6,0--6,11))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, - (1,0--4,16), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + (1,0--6,11), { LeadingKeyword = Module (1,0--1,6) })], (true, true), { ConditionalDirectives = [] CodeComments = [] }, set [])) -(6,0)-(6,4) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. -(6,0)-(6,4) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. -(6,0)-(6,4) parse error Unexpected keyword 'open' in if/then/else expression -(7,0)-(7,0) parse error Incomplete structured construct at or before this point in definition. Expected incomplete structured construct at or before this point or other token. -(7,0)-(7,0) parse error Incomplete structured construct at or before this point in implementation file +(6,0)-(6,4) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(6,0)-(6,4) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/If 08.fs b/tests/service/data/SyntaxTree/Expression/If 08.fs new file mode 100644 index 00000000000..78a7d9e1fb0 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/If 08.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + if () then () else () + +() diff --git a/tests/service/data/SyntaxTree/Expression/If 08.fs.bsl b/tests/service/data/SyntaxTree/Expression/If 08.fs.bsl new file mode 100644 index 00000000000..016bc4dbfe7 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/If 08.fs.bsl @@ -0,0 +1,29 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/If 08.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + IfThenElse + (Const (Unit, (4,7--4,9)), Const (Unit, (4,15--4,17)), + Some (Const (Unit, (4,23--4,25))), Yes (4,4--4,14), false, + (4,4--4,25), { IfKeyword = (4,4--4,6) + IsElif = false + ThenKeyword = (4,10--4,14) + ElseKeyword = Some (4,18--4,22) + IfToThenRange = (4,4--4,14) }), (3,4--3,5), + NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--4,25)); + Expr (Const (Unit, (6,0--6,2)), (6,0--6,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/If 09.fs b/tests/service/data/SyntaxTree/Expression/If 09.fs new file mode 100644 index 00000000000..08dad1a5003 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/If 09.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + if () then () else + () + +() diff --git a/tests/service/data/SyntaxTree/Expression/If 09.fs.bsl b/tests/service/data/SyntaxTree/Expression/If 09.fs.bsl new file mode 100644 index 00000000000..6541b409bd9 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/If 09.fs.bsl @@ -0,0 +1,29 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/If 09.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + IfThenElse + (Const (Unit, (4,7--4,9)), Const (Unit, (4,15--4,17)), + Some (Const (Unit, (5,4--5,6))), Yes (4,4--4,14), false, + (4,4--5,6), { IfKeyword = (4,4--4,6) + IsElif = false + ThenKeyword = (4,10--4,14) + ElseKeyword = Some (4,18--4,22) + IfToThenRange = (4,4--4,14) }), (3,4--3,5), + NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,6)); + Expr (Const (Unit, (7,0--7,2)), (7,0--7,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/If 10.fs b/tests/service/data/SyntaxTree/Expression/If 10.fs new file mode 100644 index 00000000000..ca48a20eb30 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/If 10.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + if () then () else + +() diff --git a/tests/service/data/SyntaxTree/Expression/If 10.fs.bsl b/tests/service/data/SyntaxTree/Expression/If 10.fs.bsl new file mode 100644 index 00000000000..98d5ae23eb6 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/If 10.fs.bsl @@ -0,0 +1,35 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/If 10.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + IfThenElse + (Const (Unit, (4,7--4,9)), Const (Unit, (4,15--4,17)), + Some + (ArbitraryAfterError + ("typedSequentialExprBlock1", (4,22--4,22))), + Yes (4,4--4,14), false, (4,4--4,22), + { IfKeyword = (4,4--4,6) + IsElif = false + ThenKeyword = (4,10--4,14) + ElseKeyword = Some (4,18--4,22) + IfToThenRange = (4,4--4,14) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--4,22)); + Expr (Const (Unit, (6,0--6,2)), (6,0--6,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(6,0)-(6,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Lambda - Missing expr 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Lambda - Missing expr 02.fs.bsl index 3f23567d867..f59f6cd04ad 100644 --- a/tests/service/data/SyntaxTree/Expression/Lambda - Missing expr 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Lambda - Missing expr 02.fs.bsl @@ -20,5 +20,5 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (1:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Possible incorrect indentation: this token is offside of context started at position (1:1). Try indenting this token further or using standard formatting conventions. (3,0)-(3,8) parse error Missing function body diff --git a/tests/service/data/SyntaxTree/Expression/Lazy 01.fs b/tests/service/data/SyntaxTree/Expression/Lazy 01.fs new file mode 100644 index 00000000000..f21e4281a43 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Lazy 01.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + lazy + 1 + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Lazy 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Lazy 01.fs.bsl new file mode 100644 index 00000000000..9af75da75fe --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Lazy 01.fs.bsl @@ -0,0 +1,22 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Lazy 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + Lazy (Const (Int32 1, (5,8--5,9)), (4,4--5,9)), (3,4--3,5), + Yes (3,0--5,9), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--5,9)); Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Lazy 02.fs b/tests/service/data/SyntaxTree/Expression/Lazy 02.fs new file mode 100644 index 00000000000..5b159a35a39 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Lazy 02.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + lazy + 1 + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Lazy 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Lazy 02.fs.bsl new file mode 100644 index 00000000000..32e1522a9e5 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Lazy 02.fs.bsl @@ -0,0 +1,22 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Lazy 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + Lazy (Const (Int32 1, (5,4--5,5)), (4,4--5,5)), (3,4--3,5), + Yes (3,0--5,5), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--5,5)); Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Lazy 03.fs b/tests/service/data/SyntaxTree/Expression/Lazy 03.fs new file mode 100644 index 00000000000..a26606e7aa6 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Lazy 03.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + lazy + +1 diff --git a/tests/service/data/SyntaxTree/Expression/Lazy 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Lazy 03.fs.bsl new file mode 100644 index 00000000000..f4b5370521d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Lazy 03.fs.bsl @@ -0,0 +1,27 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Lazy 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + Lazy + (ArbitraryAfterError ("declExprBlock1", (4,8--4,8)), + (4,4--4,8)), (3,4--3,5), Yes (3,0--4,8), + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--4,8)); + Expr (Const (Int32 1, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(6,0)-(6,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Let 01.fs b/tests/service/data/SyntaxTree/Expression/Let 01.fs new file mode 100644 index 00000000000..2770bd84c0d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Let 01.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + () + +() diff --git a/tests/service/data/SyntaxTree/Expression/Let 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Let 01.fs.bsl new file mode 100644 index 00000000000..8eaabfb3d65 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Let 01.fs.bsl @@ -0,0 +1,21 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Let 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, Const (Unit, (4,4--4,6)), (3,4--3,5), + Yes (3,0--4,6), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--4,6)); Expr (Const (Unit, (6,0--6,2)), (6,0--6,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Let 02.fs b/tests/service/data/SyntaxTree/Expression/Let 02.fs new file mode 100644 index 00000000000..63e42b6c770 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Let 02.fs @@ -0,0 +1,5 @@ +module Module + +let _ = + +() diff --git a/tests/service/data/SyntaxTree/Expression/Let 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Let 02.fs.bsl new file mode 100644 index 00000000000..4709fa5c7ac --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Let 02.fs.bsl @@ -0,0 +1,25 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Let 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + ArbitraryAfterError ("localBinding1", (3,7--3,7)), (3,4--3,5), + Yes (3,4--3,7), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--3,7)); Expr (Const (Unit, (5,0--5,2)), (5,0--5,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,1) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse error Incomplete structured construct at or before this point in binding diff --git a/tests/service/data/SyntaxTree/Expression/List - Comprehension 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/List - Comprehension 02.fs.bsl index e3f3af166c5..1a89da1b0fb 100644 --- a/tests/service/data/SyntaxTree/Expression/List - Comprehension 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/List - Comprehension 02.fs.bsl @@ -14,7 +14,7 @@ ImplFile YieldOrReturn ((true, false), ArbitraryAfterError - ("typedSequentialExprBlockR", (3,14--3,16)), + ("typedSequentialExprBlockR1", (3,16--3,16)), (3,14--3,16)), (3,2--3,16)), (3,0--3,18)), (3,0--3,18))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--3,18), { LeadingKeyword = Module (1,0--1,6) })], (true, true), diff --git a/tests/service/data/SyntaxTree/Expression/Rarrow 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Rarrow 02.fs.bsl index 7f2dacb2a83..54570b38728 100644 --- a/tests/service/data/SyntaxTree/Expression/Rarrow 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Rarrow 02.fs.bsl @@ -6,7 +6,7 @@ ImplFile [Expr (YieldOrReturn ((true, true), - ArbitraryAfterError ("typedSequentialExprBlockR", (3,0--3,2)), + ArbitraryAfterError ("typedSequentialExprBlockR1", (3,2--3,2)), (3,0--3,2)), (3,0--3,2))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--3,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), diff --git a/tests/service/data/SyntaxTree/Expression/Rarrow 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Rarrow 03.fs.bsl index f551649cdb8..e0d4104ac0a 100644 --- a/tests/service/data/SyntaxTree/Expression/Rarrow 03.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Rarrow 03.fs.bsl @@ -9,7 +9,7 @@ ImplFile YieldOrReturn ((true, true), ArbitraryAfterError - ("typedSequentialExprBlockR", (3,3--3,5)), (3,3--3,5)), + ("typedSequentialExprBlockR1", (3,5--3,5)), (3,3--3,5)), (3,0--3,5)), (3,0--3,5))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--3,5), { LeadingKeyword = Module (1,0--1,6) })], (true, true), diff --git a/tests/service/data/SyntaxTree/Expression/Set 01.fs b/tests/service/data/SyntaxTree/Expression/Set 01.fs new file mode 100644 index 00000000000..44a2acfabff --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Set 01.fs @@ -0,0 +1,5 @@ +module Module + +x <- 1 + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Set 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Set 01.fs.bsl new file mode 100644 index 00000000000..68e1f2c85c2 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Set 01.fs.bsl @@ -0,0 +1,14 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Set 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (LongIdentSet + (SynLongIdent ([x], [], [None]), Const (Int32 1, (3,5--3,6)), + (3,0--3,6)), (3,0--3,6)); + Expr (Const (Int32 2, (5,0--5,1)), (5,0--5,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Set 02.fs b/tests/service/data/SyntaxTree/Expression/Set 02.fs new file mode 100644 index 00000000000..bface924cf4 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Set 02.fs @@ -0,0 +1,6 @@ +module Module + +x <- + 1 + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Set 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Set 02.fs.bsl new file mode 100644 index 00000000000..da5e8af6a69 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Set 02.fs.bsl @@ -0,0 +1,14 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Set 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (LongIdentSet + (SynLongIdent ([x], [], [None]), Const (Int32 1, (4,4--4,5)), + (3,0--4,5)), (3,0--4,5)); + Expr (Const (Int32 2, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Set 03.fs b/tests/service/data/SyntaxTree/Expression/Set 03.fs new file mode 100644 index 00000000000..5b34fe43031 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Set 03.fs @@ -0,0 +1,5 @@ +module Module + +x <- + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Set 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Set 03.fs.bsl new file mode 100644 index 00000000000..fc450c30c94 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Set 03.fs.bsl @@ -0,0 +1,13 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Set 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (LongIdentSet + (SynLongIdent ([x], [], [None]), Const (Int32 2, (5,0--5,1)), + (3,0--5,1)), (3,0--5,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Set 04.fs b/tests/service/data/SyntaxTree/Expression/Set 04.fs new file mode 100644 index 00000000000..cc02a85ed80 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Set 04.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + x <- + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Set 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/Set 04.fs.bsl new file mode 100644 index 00000000000..2f87f4e5cee --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Set 04.fs.bsl @@ -0,0 +1,28 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Set 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + LongIdentSet + (SynLongIdent ([x], [], [None]), + ArbitraryAfterError ("declExprBlock1", (4,8--4,8)), + (4,4--4,8)), (3,4--3,5), Yes (3,0--4,8), + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--4,8)); + Expr (Const (Int32 2, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(6,0)-(6,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Try - Finally 01.fs b/tests/service/data/SyntaxTree/Expression/Try - Finally 01.fs new file mode 100644 index 00000000000..b03d6d6054d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - Finally 01.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + finally 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/Try - Finally 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - Finally 01.fs.bsl new file mode 100644 index 00000000000..d2437e5ebfc --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - Finally 01.fs.bsl @@ -0,0 +1,27 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - Finally 01.fs", false, QualifiedNameOfFile Module, + [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryFinally + (Const (Int32 1, (4,8--4,9)), Const (Int32 2, (5,12--5,13)), + (4,4--5,13), Yes (4,4--4,7), Yes (5,4--5,11), + { TryKeyword = (4,4--4,7) + FinallyKeyword = (5,4--5,11) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,13)); + Expr (Const (Int32 3, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Try - Finally 02.fs b/tests/service/data/SyntaxTree/Expression/Try - Finally 02.fs new file mode 100644 index 00000000000..8c364c295db --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - Finally 02.fs @@ -0,0 +1,8 @@ +module Module + +let _ = + try 1 + finally + 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/Try - Finally 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - Finally 02.fs.bsl new file mode 100644 index 00000000000..4d463ef1077 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - Finally 02.fs.bsl @@ -0,0 +1,27 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - Finally 02.fs", false, QualifiedNameOfFile Module, + [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryFinally + (Const (Int32 1, (4,8--4,9)), Const (Int32 2, (6,8--6,9)), + (4,4--6,9), Yes (4,4--4,7), Yes (5,4--5,11), + { TryKeyword = (4,4--4,7) + FinallyKeyword = (5,4--5,11) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--6,9)); + Expr (Const (Int32 3, (8,0--8,1)), (8,0--8,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--8,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Try - Finally 03.fs b/tests/service/data/SyntaxTree/Expression/Try - Finally 03.fs new file mode 100644 index 00000000000..c61745bd33c --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - Finally 03.fs @@ -0,0 +1,8 @@ +module Module + +let _ = + try 1 + finally + 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/Try - Finally 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - Finally 03.fs.bsl new file mode 100644 index 00000000000..2ad046c6c6a --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - Finally 03.fs.bsl @@ -0,0 +1,27 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - Finally 03.fs", false, QualifiedNameOfFile Module, + [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryFinally + (Const (Int32 1, (4,8--4,9)), Const (Int32 2, (6,4--6,5)), + (4,4--6,5), Yes (4,4--4,7), Yes (5,4--5,11), + { TryKeyword = (4,4--4,7) + FinallyKeyword = (5,4--5,11) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--6,5)); + Expr (Const (Int32 3, (8,0--8,1)), (8,0--8,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--8,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Try - Finally 04.fs b/tests/service/data/SyntaxTree/Expression/Try - Finally 04.fs new file mode 100644 index 00000000000..9d2a3c01464 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - Finally 04.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + finally + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Try - Finally 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - Finally 04.fs.bsl new file mode 100644 index 00000000000..43cf24541ff --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - Finally 04.fs.bsl @@ -0,0 +1,32 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - Finally 04.fs", false, QualifiedNameOfFile Module, + [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryFinally + (Const (Int32 1, (4,8--4,9)), + ArbitraryAfterError + ("typedSequentialExprBlock1", (5,11--5,11)), (4,4--5,11), + Yes (4,4--4,7), Yes (5,4--5,11), + { TryKeyword = (4,4--4,7) + FinallyKeyword = (5,4--5,11) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,11)); + Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,0)-(7,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(7,0)-(7,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 01.fs b/tests/service/data/SyntaxTree/Expression/Try - With 01.fs new file mode 100644 index 00000000000..5563157173f --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 01.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + with _ -> 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 01.fs.bsl new file mode 100644 index 00000000000..beb30aedfe4 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 01.fs.bsl @@ -0,0 +1,33 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 01.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), + [SynMatchClause + (Wild (5,9--5,10), None, Const (Int32 2, (5,14--5,15)), + (5,9--5,15), Yes, { ArrowRange = Some (5,11--5,13) + BarRange = None })], (4,4--5,15), + Yes (4,4--4,7), Yes (5,4--5,8), + { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--5,15) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,15)); + Expr (Const (Int32 3, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 02.fs b/tests/service/data/SyntaxTree/Expression/Try - With 02.fs new file mode 100644 index 00000000000..e4fdf3032ec --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 02.fs @@ -0,0 +1,8 @@ +module Module + +let _ = + try 1 + with _ -> + 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 02.fs.bsl new file mode 100644 index 00000000000..0fa71a2d560 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 02.fs.bsl @@ -0,0 +1,33 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 02.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), + [SynMatchClause + (Wild (5,9--5,10), None, Const (Int32 2, (6,8--6,9)), + (5,9--6,9), Yes, { ArrowRange = Some (5,11--5,13) + BarRange = None })], (4,4--6,9), + Yes (4,4--4,7), Yes (5,4--5,8), + { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--6,9) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--6,9)); + Expr (Const (Int32 3, (8,0--8,1)), (8,0--8,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--8,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 03.fs b/tests/service/data/SyntaxTree/Expression/Try - With 03.fs new file mode 100644 index 00000000000..ea5ff93d4d1 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 03.fs @@ -0,0 +1,8 @@ +module Module + +let _ = + try 1 + with _ -> + 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 03.fs.bsl new file mode 100644 index 00000000000..f357989f6d7 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 03.fs.bsl @@ -0,0 +1,33 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 03.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), + [SynMatchClause + (Wild (5,9--5,10), None, Const (Int32 2, (6,4--6,5)), + (5,9--6,5), Yes, { ArrowRange = Some (5,11--5,13) + BarRange = None })], (4,4--6,5), + Yes (4,4--4,7), Yes (5,4--5,8), + { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--6,5) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--6,5)); + Expr (Const (Int32 3, (8,0--8,1)), (8,0--8,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--8,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 04.fs b/tests/service/data/SyntaxTree/Expression/Try - With 04.fs new file mode 100644 index 00000000000..3d2617dae01 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 04.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + with _ -> + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 04.fs.bsl new file mode 100644 index 00000000000..207919af1c4 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 04.fs.bsl @@ -0,0 +1,38 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 04.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), + [SynMatchClause + (Wild (5,9--5,10), None, + ArbitraryAfterError + ("typedSequentialExprBlockR1", (5,13--5,13)), + (5,9--5,13), Yes, { ArrowRange = Some (5,11--5,13) + BarRange = None })], (4,4--5,13), + Yes (4,4--4,7), Yes (5,4--5,8), + { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--5,13) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,13)); + Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,0)-(7,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(7,0)-(7,1) parse error Incomplete structured construct at or before this point in pattern matching diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 05.fs b/tests/service/data/SyntaxTree/Expression/Try - With 05.fs new file mode 100644 index 00000000000..fe0d60fcad6 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 05.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + with _ + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 05.fs.bsl new file mode 100644 index 00000000000..cce7a7716ca --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 05.fs.bsl @@ -0,0 +1,36 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 05.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), + [SynMatchClause + (Wild (5,9--5,10), None, + ArbitraryAfterError ("patternClauses2", (5,10--5,10)), + (5,9--5,10), Yes, { ArrowRange = None + BarRange = None })], (4,4--5,10), + Yes (4,4--4,7), Yes (5,4--5,8), + { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--5,10) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,10)); + Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,0)-(7,1) parse error Incomplete structured construct at or before this point in pattern matching. Expected '->' or other token. diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 06.fs b/tests/service/data/SyntaxTree/Expression/Try - With 06.fs new file mode 100644 index 00000000000..5fa48566795 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 06.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + with + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 06.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 06.fs.bsl new file mode 100644 index 00000000000..2b765f60b64 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 06.fs.bsl @@ -0,0 +1,31 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 06.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), [], (4,4--5,8), Yes (4,4--4,7), + Yes (5,4--5,8), { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--5,8) }), + (3,4--3,5), NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--5,8)); Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,0)-(7,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(7,0)-(7,1) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 07.fs b/tests/service/data/SyntaxTree/Expression/Try - With 07.fs new file mode 100644 index 00000000000..76f5c79e8bf --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 07.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + with _ when 2 -> 3 + +4 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 07.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 07.fs.bsl new file mode 100644 index 00000000000..394af4cbd7c --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 07.fs.bsl @@ -0,0 +1,33 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 07.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), + [SynMatchClause + (Wild (5,9--5,10), Some (Const (Int32 2, (5,16--5,17))), + Const (Int32 3, (5,21--5,22)), (5,9--5,22), Yes, + { ArrowRange = Some (5,18--5,20) + BarRange = None })], (4,4--5,22), Yes (4,4--4,7), + Yes (5,4--5,8), { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--5,22) }), + (3,4--3,5), NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--5,22)); Expr (Const (Int32 4, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 08.fs b/tests/service/data/SyntaxTree/Expression/Try - With 08.fs new file mode 100644 index 00000000000..71dc478cb6a --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 08.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + with _ when 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 08.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 08.fs.bsl new file mode 100644 index 00000000000..bcad7831beb --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 08.fs.bsl @@ -0,0 +1,36 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 08.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), + [SynMatchClause + (Wild (5,9--5,10), Some (Const (Int32 2, (5,16--5,17))), + ArbitraryAfterError ("patternClauses2", (5,17--5,17)), + (5,9--5,17), Yes, { ArrowRange = None + BarRange = None })], (4,4--5,17), + Yes (4,4--4,7), Yes (5,4--5,8), + { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--5,17) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,17)); + Expr (Const (Int32 3, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,0)-(7,1) parse error Incomplete structured construct at or before this point in pattern matching. Expected '->' or other token. diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 09.fs b/tests/service/data/SyntaxTree/Expression/Try - With 09.fs new file mode 100644 index 00000000000..321adfbd71f --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 09.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + try 1 + with _ when + +3 diff --git a/tests/service/data/SyntaxTree/Expression/Try - With 09.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try - With 09.fs.bsl new file mode 100644 index 00000000000..d3557177c85 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try - With 09.fs.bsl @@ -0,0 +1,30 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try - With 09.fs", false, QualifiedNameOfFile Module, [], + [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), [], (4,4--5,8), Yes (4,4--4,7), + Yes (5,4--5,8), { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--5,8) + WithKeyword = (5,4--5,8) + WithToEndRange = (5,4--5,8) }), + (3,4--3,5), NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--5,8)); Expr (Const (Int32 3, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,0)-(7,1) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Try 01.fs b/tests/service/data/SyntaxTree/Expression/Try 01.fs new file mode 100644 index 00000000000..bf6ff4dd0eb --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try 01.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + try 1 + +2 diff --git a/tests/service/data/SyntaxTree/Expression/Try 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try 01.fs.bsl new file mode 100644 index 00000000000..94e5c9c690d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try 01.fs.bsl @@ -0,0 +1,29 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (Const (Int32 1, (4,8--4,9)), [], (4,4--4,9), Yes (4,4--4,7), + Yes (4,9--4,9), { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--4,9) + WithKeyword = (4,9--4,9) + WithToEndRange = (4,4--4,9) }), + (3,4--3,5), NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--4,9)); Expr (Const (Int32 2, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Incomplete structured construct at or before this point in expression. Expected 'finally', 'with' or other token. diff --git a/tests/service/data/SyntaxTree/Expression/Try 02.fs b/tests/service/data/SyntaxTree/Expression/Try 02.fs new file mode 100644 index 00000000000..7469f276fc4 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try 02.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + try + +1 diff --git a/tests/service/data/SyntaxTree/Expression/Try 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try 02.fs.bsl new file mode 100644 index 00000000000..66b2deb6491 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/Try 02.fs.bsl @@ -0,0 +1,31 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/Try 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + TryWith + (ArbitraryAfterError ("try1", (4,7--4,7)), [], (4,4--4,7), + Yes (4,4--4,7), Yes (4,7--4,7), + { TryKeyword = (4,4--4,7) + TryToWithRange = (4,4--4,7) + WithKeyword = (4,7--4,7) + WithToEndRange = (4,7--4,7) }), (3,4--3,5), NoneAtLet, + { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--4,7)); + Expr (Const (Int32 1, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(6,0)-(6,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 01.fs.bsl index 12da5ed09a5..8a17abd5fe8 100644 --- a/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 01.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 01.fs.bsl @@ -6,7 +6,7 @@ ImplFile ([Module], false, NamedModule, [Expr (TryWith - (ArbitraryAfterError ("typedSequentialExprBlockR", (3,0--3,3)), + (ArbitraryAfterError ("try2", (3,3--3,3)), [SynMatchClause (Wild (4,5--4,6), None, Const (Unit, (4,10--4,12)), (4,5--4,12), Yes, { ArrowRange = Some (4,7--4,9) @@ -21,4 +21,4 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,4) parse error Incomplete structured construct at or before this point in expression +(4,0)-(4,4) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 02.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 02.fs.bsl index 22f976bd705..18cc62de5a9 100644 --- a/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 02.fs.bsl @@ -6,11 +6,11 @@ ImplFile ([Module], false, NamedModule, [Expr (TryWith - (ArbitraryAfterError ("typedSequentialExprBlockR", (3,0--3,3)), + (ArbitraryAfterError ("try2", (3,3--3,3)), [SynMatchClause (Wild (4,5--4,6), None, ArbitraryAfterError - ("typedSequentialExprBlockR", (4,7--4,9)), (4,5--4,9), + ("typedSequentialExprBlockR1", (4,9--4,9)), (4,5--4,9), Yes, { ArrowRange = Some (4,7--4,9) BarRange = None })], (3,0--4,9), Yes (3,0--3,3), Yes (4,0--4,4), { TryKeyword = (3,0--3,3) @@ -22,6 +22,6 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,4) parse error Incomplete structured construct at or before this point in expression -(5,0)-(5,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. (5,0)-(5,0) parse error Incomplete structured construct at or before this point in pattern matching +(4,0)-(4,4) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 03.fs.bsl index 0cd9ebc63c7..0b44c65d19e 100644 --- a/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 03.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 03.fs.bsl @@ -6,17 +6,16 @@ ImplFile ([Module], false, NamedModule, [Expr (TryWith - (ArbitraryAfterError ("typedSequentialExprBlockR", (3,0--3,3)), - [], (3,0--3,3), Yes (3,0--3,3), Yes (3,3--3,3), - { TryKeyword = (3,0--3,3) - TryToWithRange = (3,0--3,3) - WithKeyword = (3,3--3,3) - WithToEndRange = (3,0--3,3) }), (3,0--3,3))], + (ArbitraryAfterError ("try1", (3,3--3,3)), [], (3,0--3,3), + Yes (3,0--3,3), Yes (3,3--3,3), { TryKeyword = (3,0--3,3) + TryToWithRange = (3,0--3,3) + WithKeyword = (3,3--3,3) + WithToEndRange = (3,3--3,3) }), + (3,0--3,3))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--3,3), { LeadingKeyword = Module (1,0--1,6) })], (true, true), { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. -(4,0)-(4,0) parse error Incomplete structured construct at or before this point in expression -(3,0)-(3,3) parse error Unexpected end of input in 'try' expression. Expected 'try with ' or 'try finally '. +(4,0)-(4,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 05.fs.bsl index 56b437e922d..e55f5f0b2ef 100644 --- a/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 05.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Try with - Missing expr 05.fs.bsl @@ -6,16 +6,16 @@ ImplFile ([Module], false, NamedModule, [Expr (TryWith - (ArbitraryAfterError ("typedSequentialExprBlockR", (3,0--3,3)), - [], (3,0--3,3), Yes (3,0--3,3), Yes (3,3--3,3), - { TryKeyword = (3,0--3,3) - TryToWithRange = (3,0--3,3) - WithKeyword = (3,3--3,3) - WithToEndRange = (3,0--3,3) }), (3,0--3,3))], + (ArbitraryAfterError ("try1", (3,3--3,3)), [], (3,0--3,3), + Yes (3,0--3,3), Yes (3,3--3,3), { TryKeyword = (3,0--3,3) + TryToWithRange = (3,0--3,3) + WithKeyword = (3,3--3,3) + WithToEndRange = (3,3--3,3) }), + (3,0--3,3))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--3,3), { LeadingKeyword = Module (1,0--1,6) })], (true, true), { ConditionalDirectives = [] CodeComments = [] }, set [])) -(5,0)-(5,6) parse error Incomplete structured construct at or before this point in expression -(3,0)-(3,3) parse error Unexpected end of input in 'try' expression. Expected 'try with ' or 'try finally '. +(5,0)-(5,6) parse error Expecting expression +(5,0)-(5,6) parse error Unexpected keyword 'module' in definition. Expected incomplete structured construct at or before this point or other token. diff --git a/tests/service/data/SyntaxTree/Expression/Tuple - Missing item 08.fs.bsl b/tests/service/data/SyntaxTree/Expression/Tuple - Missing item 08.fs.bsl index 8cbe0b3a9b2..06bc3c9f50e 100644 --- a/tests/service/data/SyntaxTree/Expression/Tuple - Missing item 08.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Tuple - Missing item 08.fs.bsl @@ -18,6 +18,6 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (1:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Possible incorrect indentation: this token is offside of context started at position (1:1). Try indenting this token further or using standard formatting conventions. (3,2)-(3,3) parse error Expected an expression after this point (3,0)-(3,1) parse error Unmatched '(' diff --git a/tests/service/data/SyntaxTree/Expression/Tuple - Missing item 10.fs.bsl b/tests/service/data/SyntaxTree/Expression/Tuple - Missing item 10.fs.bsl index 9d1bcb21889..dad968e1b38 100644 --- a/tests/service/data/SyntaxTree/Expression/Tuple - Missing item 10.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Tuple - Missing item 10.fs.bsl @@ -25,5 +25,5 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:9). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:9). Try indenting this token further or using standard formatting conventions. (3,9)-(3,10) parse error Expected an expression after this point diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 01.fs.bsl b/tests/service/data/SyntaxTree/Expression/Upcast 01.fs.bsl index 2bc05274db5..c5ebd8372d1 100644 --- a/tests/service/data/SyntaxTree/Expression/Upcast 01.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Upcast 01.fs.bsl @@ -11,5 +11,5 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. (4,0)-(4,0) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/Upcast 04.fs.bsl index 2d6d2c730c7..b5cc3cc7db5 100644 --- a/tests/service/data/SyntaxTree/Expression/Upcast 04.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Upcast 04.fs.bsl @@ -4,13 +4,14 @@ ImplFile [SynModuleOrNamespace ([Module], false, NamedModule, [Expr - (Do (Upcast (Ident i, Anon (5,0--5,2), (4,4--5,2)), (3,0--5,2)), - (3,0--5,2))], + (Do + (Upcast (Ident i, FromParseError (4,8--4,8), (4,4--4,8)), + (3,0--4,8)), (3,0--4,8)); + Expr (Const (Unit, (5,0--5,2)), (5,0--5,2))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--5,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), { ConditionalDirectives = [] CodeComments = [] }, set [])) -(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. -(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. -(5,1)-(5,2) parse error Unexpected symbol ')' in expression +(5,0)-(5,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/Upcast 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/Upcast 05.fs.bsl index 2b2e97051b6..f7b0d1b84c3 100644 --- a/tests/service/data/SyntaxTree/Expression/Upcast 05.fs.bsl +++ b/tests/service/data/SyntaxTree/Expression/Upcast 05.fs.bsl @@ -5,13 +5,12 @@ ImplFile ([Module], false, NamedModule, [Expr (Do - (Upcast - (Ident i, LongIdent (SynLongIdent ([i], [], [None])), - (4,4--5,1)), (3,0--5,1)), (3,0--5,1))], + (Upcast (Ident i, FromParseError (4,8--4,8), (4,4--4,8)), + (3,0--4,8)), (3,0--4,8)); Expr (Ident i, (5,0--5,1))], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), { ConditionalDirectives = [] CodeComments = [] }, set [])) -(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. -(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse error Incomplete structured construct at or before this point in expression diff --git a/tests/service/data/SyntaxTree/Expression/While 03.fs b/tests/service/data/SyntaxTree/Expression/While 03.fs new file mode 100644 index 00000000000..b513cbd2b21 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/While 03.fs @@ -0,0 +1,6 @@ +module Module + +let _ = + while 1 do + +2 diff --git a/tests/service/data/SyntaxTree/Expression/While 03.fs.bsl b/tests/service/data/SyntaxTree/Expression/While 03.fs.bsl new file mode 100644 index 00000000000..e74fa7f8486 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/While 03.fs.bsl @@ -0,0 +1,28 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/While 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + While + (Yes (4,4--4,11), Const (Int32 1, (4,10--4,11)), + ArbitraryAfterError + ("typedSequentialExprBlock1", (4,14--4,14)), (4,4--4,14)), + (3,4--3,5), NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--4,14)); Expr (Const (Int32 2, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,0)-(6,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(6,0)-(6,1) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/While 04.fs b/tests/service/data/SyntaxTree/Expression/While 04.fs new file mode 100644 index 00000000000..6b7c69d7d05 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/While 04.fs @@ -0,0 +1,4 @@ +module Module + +let _ = + while 1 do diff --git a/tests/service/data/SyntaxTree/Expression/While 04.fs.bsl b/tests/service/data/SyntaxTree/Expression/While 04.fs.bsl new file mode 100644 index 00000000000..1286e6a723a --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/While 04.fs.bsl @@ -0,0 +1,28 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/While 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + While + (Yes (4,4--4,11), Const (Int32 1, (4,10--4,11)), + ArbitraryAfterError + ("typedSequentialExprBlock1", (4,14--4,14)), (4,4--4,14)), + (3,4--3,5), NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--4,14))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,14), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,0) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,0) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Expression/While 05.fs b/tests/service/data/SyntaxTree/Expression/While 05.fs new file mode 100644 index 00000000000..c7117602682 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/While 05.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + while 1 do + 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/While 05.fs.bsl b/tests/service/data/SyntaxTree/Expression/While 05.fs.bsl new file mode 100644 index 00000000000..b6d3daf4f51 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/While 05.fs.bsl @@ -0,0 +1,24 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/While 05.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + While + (Yes (4,4--4,11), Const (Int32 1, (4,10--4,11)), + Const (Int32 2, (5,8--5,9)), (4,4--5,9)), (3,4--3,5), + NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,9)); + Expr (Const (Int32 3, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Expression/While 06.fs b/tests/service/data/SyntaxTree/Expression/While 06.fs new file mode 100644 index 00000000000..bbf7c1f37d9 --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/While 06.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + while 1 do + 2 + +3 diff --git a/tests/service/data/SyntaxTree/Expression/While 06.fs.bsl b/tests/service/data/SyntaxTree/Expression/While 06.fs.bsl new file mode 100644 index 00000000000..e106a73365d --- /dev/null +++ b/tests/service/data/SyntaxTree/Expression/While 06.fs.bsl @@ -0,0 +1,24 @@ +ImplFile + (ParsedImplFileInput + ("/root/Expression/While 06.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + While + (Yes (4,4--4,11), Const (Int32 1, (4,10--4,11)), + Const (Int32 2, (5,4--5,5)), (4,4--5,5)), (3,4--3,5), + NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,5)); + Expr (Const (Int32 3, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/IfThenElse/Comment after else 01.fs b/tests/service/data/SyntaxTree/IfThenElse/Comment after else 01.fs new file mode 100644 index 00000000000..357ecf70888 --- /dev/null +++ b/tests/service/data/SyntaxTree/IfThenElse/Comment after else 01.fs @@ -0,0 +1,4 @@ +if a then + b +else (* some long comment here *) if c then + d diff --git a/tests/service/data/SyntaxTree/IfThenElse/Comment after else 01.fs.bsl b/tests/service/data/SyntaxTree/IfThenElse/Comment after else 01.fs.bsl new file mode 100644 index 00000000000..6800642d8f9 --- /dev/null +++ b/tests/service/data/SyntaxTree/IfThenElse/Comment after else 01.fs.bsl @@ -0,0 +1,28 @@ +ImplFile + (ParsedImplFileInput + ("/root/IfThenElse/Comment after else 01.fs", false, + QualifiedNameOfFile Comment after else 01, [], [], + [SynModuleOrNamespace + ([Comment after else 01], false, AnonModule, + [Expr + (IfThenElse + (Ident a, Ident b, + Some + (IfThenElse + (Ident c, Ident d, None, Yes (3,34--3,43), false, + (3,34--4,5), { IfKeyword = (3,34--3,36) + IsElif = false + ThenKeyword = (3,39--3,43) + ElseKeyword = None + IfToThenRange = (3,34--3,43) })), + Yes (1,0--1,9), false, (1,0--4,5), + { IfKeyword = (1,0--1,2) + IsElif = false + ThenKeyword = (1,5--1,9) + ElseKeyword = Some (3,0--3,4) + IfToThenRange = (1,0--1,9) }), (1,0--4,5))], PreXmlDocEmpty, + [], None, (1,0--5,0), { LeadingKeyword = None })], (true, true), + { ConditionalDirectives = [] + CodeComments = [BlockComment (3,5--3,33)] }, set [])) + +(1,0)-(2,0) parse warning The declarations in this file will be placed in an implicit module 'Comment after else 01' based on the file name 'Comment after else 01.fs'. However this is not a valid F# identifier, so the contents will not be accessible from other files. Consider renaming the file or adding a 'module' or 'namespace' declaration at the top of the file. diff --git a/tests/service/data/SyntaxTree/IfThenElse/CommentBetweenElseAndIf.fs b/tests/service/data/SyntaxTree/IfThenElse/Comment after else 02.fs similarity index 98% rename from tests/service/data/SyntaxTree/IfThenElse/CommentBetweenElseAndIf.fs rename to tests/service/data/SyntaxTree/IfThenElse/Comment after else 02.fs index bbed0993ad0..7c33c31aedf 100644 --- a/tests/service/data/SyntaxTree/IfThenElse/CommentBetweenElseAndIf.fs +++ b/tests/service/data/SyntaxTree/IfThenElse/Comment after else 02.fs @@ -1,4 +1,3 @@ - if a then b else (* some long comment here *) if c then diff --git a/tests/service/data/SyntaxTree/IfThenElse/Comment after else 02.fs.bsl b/tests/service/data/SyntaxTree/IfThenElse/Comment after else 02.fs.bsl new file mode 100644 index 00000000000..b5121f879e3 --- /dev/null +++ b/tests/service/data/SyntaxTree/IfThenElse/Comment after else 02.fs.bsl @@ -0,0 +1,26 @@ +ImplFile + (ParsedImplFileInput + ("/root/IfThenElse/Comment after else 02.fs", false, + QualifiedNameOfFile Comment after else 02, [], [], + [SynModuleOrNamespace + ([Comment after else 02], false, AnonModule, + [Expr + (IfThenElse + (Ident a, + ArbitraryAfterError ("typedSequentialExprBlock1", (1,9--1,9)), + None, Yes (1,0--1,9), false, (1,0--1,9), + { IfKeyword = (1,0--1,2) + IsElif = false + ThenKeyword = (1,5--1,9) + ElseKeyword = None + IfToThenRange = (1,0--1,9) }), (1,0--1,9)); + Expr (Ident b, (2,0--2,1))], PreXmlDocEmpty, [], None, (1,0--3,0), + { LeadingKeyword = None })], (true, true), + { ConditionalDirectives = [] + CodeComments = [BlockComment (3,5--3,33)] }, set [])) + +(2,0)-(2,1) parse error Possible incorrect indentation: this token is offside of context started at position (1:1). Try indenting this token further or using standard formatting conventions. +(2,0)-(2,1) parse error Expecting expression +(3,0)-(3,36) parse error Unexpected keyword 'elif' in implementation file +(4,0)-(4,1) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(1,0)-(2,0) parse warning The declarations in this file will be placed in an implicit module 'Comment after else 02' based on the file name 'Comment after else 02.fs'. However this is not a valid F# identifier, so the contents will not be accessible from other files. Consider renaming the file or adding a 'module' or 'namespace' declaration at the top of the file. diff --git a/tests/service/data/SyntaxTree/IfThenElse/CommentBetweenElseAndIf.fs.bsl b/tests/service/data/SyntaxTree/IfThenElse/CommentBetweenElseAndIf.fs.bsl deleted file mode 100644 index 07a03d00f32..00000000000 --- a/tests/service/data/SyntaxTree/IfThenElse/CommentBetweenElseAndIf.fs.bsl +++ /dev/null @@ -1,31 +0,0 @@ -ImplFile - (ParsedImplFileInput - ("/root/IfThenElse/CommentBetweenElseAndIf.fs", false, - QualifiedNameOfFile CommentBetweenElseAndIf, [], [], - [SynModuleOrNamespace - ([CommentBetweenElseAndIf], false, AnonModule, - [Expr - (IfThenElse - (Ident a, Ident b, - Some - (IfThenElse - (Ident c, Ident d, None, Yes (4,34--4,43), false, - (4,34--5,1), { IfKeyword = (4,34--4,36) - IsElif = false - ThenKeyword = (4,39--4,43) - ElseKeyword = None - IfToThenRange = (4,34--4,43) })), - Yes (2,0--2,9), false, (2,0--5,1), - { IfKeyword = (2,0--2,2) - IsElif = false - ThenKeyword = (2,5--2,9) - ElseKeyword = Some (4,0--4,4) - IfToThenRange = (2,0--2,9) }), (2,0--5,1))], PreXmlDocEmpty, - [], None, (2,0--6,0), { LeadingKeyword = None })], (true, true), - { ConditionalDirectives = [] - CodeComments = [BlockComment (4,5--4,33)] }, set [])) - -(3,0)-(3,1) parse warning Possible incorrect indentation: this token is offside of context started at position (2:1). Try indenting this token further or using standard formatting conventions. -(3,0)-(3,1) parse warning Possible incorrect indentation: this token is offside of context started at position (2:1). Try indenting this token further or using standard formatting conventions. -(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:1). Try indenting this token further or using standard formatting conventions. -(5,0)-(5,1) parse warning Possible incorrect indentation: this token is offside of context started at position (4:1). Try indenting this token further or using standard formatting conventions. diff --git a/tests/service/data/SyntaxTree/MatchClause/Missing expr 02.fs.bsl b/tests/service/data/SyntaxTree/MatchClause/Missing expr 02.fs.bsl index be376814120..24684c16dc2 100644 --- a/tests/service/data/SyntaxTree/MatchClause/Missing expr 02.fs.bsl +++ b/tests/service/data/SyntaxTree/MatchClause/Missing expr 02.fs.bsl @@ -10,7 +10,7 @@ ImplFile [SynMatchClause (Wild (4,2--4,3), None, ArbitraryAfterError - ("typedSequentialExprBlockR", (4,4--4,6)), (4,2--4,6), + ("typedSequentialExprBlockR1", (4,6--4,6)), (4,2--4,6), Yes, { ArrowRange = Some (4,4--4,6) BarRange = Some (4,0--4,1) })], (3,0--4,6), { MatchKeyword = (3,0--3,5) @@ -20,5 +20,5 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(5,0)-(5,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. (5,0)-(5,0) parse error Incomplete structured construct at or before this point in pattern matching diff --git a/tests/service/data/SyntaxTree/MatchClause/Missing expr 03.fs.bsl b/tests/service/data/SyntaxTree/MatchClause/Missing expr 03.fs.bsl index 5d65ea914bd..36e8ecc9e9b 100644 --- a/tests/service/data/SyntaxTree/MatchClause/Missing expr 03.fs.bsl +++ b/tests/service/data/SyntaxTree/MatchClause/Missing expr 03.fs.bsl @@ -10,7 +10,7 @@ ImplFile [SynMatchClause (Wild (4,2--4,3), None, ArbitraryAfterError - ("typedSequentialExprBlockR", (4,4--4,6)), (4,2--4,6), + ("typedSequentialExprBlockR1", (4,6--4,6)), (4,2--4,6), Yes, { ArrowRange = Some (4,4--4,6) BarRange = Some (4,0--4,1) }); SynMatchClause diff --git a/tests/service/data/SyntaxTree/MatchClause/Missing expr 04.fs.bsl b/tests/service/data/SyntaxTree/MatchClause/Missing expr 04.fs.bsl index 777d997f288..eae47c2aa83 100644 --- a/tests/service/data/SyntaxTree/MatchClause/Missing expr 04.fs.bsl +++ b/tests/service/data/SyntaxTree/MatchClause/Missing expr 04.fs.bsl @@ -10,7 +10,7 @@ ImplFile [SynMatchClause (Wild (4,2--4,3), Some (Const (Bool true, (4,9--4,13))), ArbitraryAfterError - ("typedSequentialExprBlockR", (4,14--4,16)), (4,2--4,16), + ("typedSequentialExprBlockR1", (4,16--4,16)), (4,2--4,16), Yes, { ArrowRange = Some (4,14--4,16) BarRange = Some (4,0--4,1) }); SynMatchClause diff --git a/tests/service/data/SyntaxTree/MatchClause/Missing expr 05.fs b/tests/service/data/SyntaxTree/MatchClause/Missing expr 05.fs new file mode 100644 index 00000000000..2f129a29881 --- /dev/null +++ b/tests/service/data/SyntaxTree/MatchClause/Missing expr 05.fs @@ -0,0 +1,7 @@ +module Module + +let _ = + match () with + | _ -> + +() diff --git a/tests/service/data/SyntaxTree/MatchClause/Missing expr 05.fs.bsl b/tests/service/data/SyntaxTree/MatchClause/Missing expr 05.fs.bsl new file mode 100644 index 00000000000..c7c6fb79618 --- /dev/null +++ b/tests/service/data/SyntaxTree/MatchClause/Missing expr 05.fs.bsl @@ -0,0 +1,35 @@ +ImplFile + (ParsedImplFileInput + ("/root/MatchClause/Missing expr 05.fs", false, QualifiedNameOfFile Module, + [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + Match + (Yes (4,4--4,17), Const (Unit, (4,10--4,12)), + [SynMatchClause + (Wild (5,6--5,7), None, + ArbitraryAfterError + ("typedSequentialExprBlockR1", (5,10--5,10)), + (5,6--5,10), Yes, { ArrowRange = Some (5,8--5,10) + BarRange = Some (5,4--5,5) })], + (4,4--5,10), { MatchKeyword = (4,4--4,9) + WithKeyword = (4,13--4,17) }), (3,4--3,5), + NoneAtLet, { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], (3,0--5,10)); + Expr (Const (Unit, (7,0--7,2)), (7,0--7,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,0)-(7,1) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. +(7,0)-(7,1) parse error Incomplete structured construct at or before this point in pattern matching diff --git a/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBody.fs b/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBody.fs deleted file mode 100644 index 9d4a1df901d..00000000000 --- a/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBody.fs +++ /dev/null @@ -1,6 +0,0 @@ - -try - let content = tryDownloadFile url - Some content -with -| ex -> diff --git a/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBody.fs.bsl b/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBody.fs.bsl deleted file mode 100644 index fddbf9a3a18..00000000000 --- a/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBody.fs.bsl +++ /dev/null @@ -1,45 +0,0 @@ -ImplFile - (ParsedImplFileInput - ("/root/MatchClause/RangeOfSingleSynMatchClauseWithMissingBody.fs", false, - QualifiedNameOfFile RangeOfSingleSynMatchClauseWithMissingBody, [], [], - [SynModuleOrNamespace - ([RangeOfSingleSynMatchClauseWithMissingBody], false, AnonModule, - [Expr - (TryWith - (LetOrUse - (false, false, - [SynBinding - (None, Normal, false, false, [], - PreXmlDoc ((3,4), FSharp.Compiler.Xml.XmlDocCollector), - SynValData - (None, SynValInfo ([], SynArgInfo ([], false, None)), - None), - Named - (SynIdent (content, None), false, None, (3,8--3,15)), - None, - App - (NonAtomic, false, Ident tryDownloadFile, Ident url, - (3,18--3,37)), (3,8--3,15), Yes (3,4--3,37), - { LeadingKeyword = Let (3,4--3,7) - InlineKeyword = None - EqualsRange = Some (3,16--3,17) })], - App - (NonAtomic, false, Ident Some, Ident content, (4,4--4,16)), - (3,4--4,16), { InKeyword = None }), - [SynMatchClause - (Named (SynIdent (ex, None), false, None, (6,2--6,4)), None, - ArbitraryAfterError - ("typedSequentialExprBlockR", (6,5--6,7)), (6,2--6,7), - Yes, { ArrowRange = Some (6,5--6,7) - BarRange = Some (6,0--6,1) })], (2,0--6,7), - Yes (2,0--2,3), Yes (5,0--5,4), { TryKeyword = (2,0--2,3) - TryToWithRange = (2,0--5,4) - WithKeyword = (5,0--5,4) - WithToEndRange = (5,0--6,7) }), - (2,0--6,7))], PreXmlDocEmpty, [], None, (2,0--7,0), - { LeadingKeyword = None })], (true, true), - { ConditionalDirectives = [] - CodeComments = [] }, set [])) - -(7,0)-(7,0) parse warning Possible incorrect indentation: this token is offside of context started at position (2:1). Try indenting this token further or using standard formatting conventions. -(7,0)-(7,0) parse error Incomplete structured construct at or before this point in pattern matching diff --git a/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr.fs b/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr.fs deleted file mode 100644 index 9740c151f9e..00000000000 --- a/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr.fs +++ /dev/null @@ -1,6 +0,0 @@ - -try - let content = tryDownloadFile url - Some content -with -| ex when (isNull ex) -> diff --git a/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr.fs.bsl b/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr.fs.bsl deleted file mode 100644 index e9ac911ead1..00000000000 --- a/tests/service/data/SyntaxTree/MatchClause/RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr.fs.bsl +++ /dev/null @@ -1,54 +0,0 @@ -ImplFile - (ParsedImplFileInput - ("/root/MatchClause/RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr.fs", - false, - QualifiedNameOfFile RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr, - [], [], - [SynModuleOrNamespace - ([RangeOfSingleSynMatchClauseWithMissingBodyAndWhenExpr], false, - AnonModule, - [Expr - (TryWith - (LetOrUse - (false, false, - [SynBinding - (None, Normal, false, false, [], - PreXmlDoc ((3,4), FSharp.Compiler.Xml.XmlDocCollector), - SynValData - (None, SynValInfo ([], SynArgInfo ([], false, None)), - None), - Named - (SynIdent (content, None), false, None, (3,8--3,15)), - None, - App - (NonAtomic, false, Ident tryDownloadFile, Ident url, - (3,18--3,37)), (3,8--3,15), Yes (3,4--3,37), - { LeadingKeyword = Let (3,4--3,7) - InlineKeyword = None - EqualsRange = Some (3,16--3,17) })], - App - (NonAtomic, false, Ident Some, Ident content, (4,4--4,16)), - (3,4--4,16), { InKeyword = None }), - [SynMatchClause - (Named (SynIdent (ex, None), false, None, (6,2--6,4)), - Some - (Paren - (App - (NonAtomic, false, Ident isNull, Ident ex, - (6,11--6,20)), (6,10--6,11), Some (6,20--6,21), - (6,10--6,21))), - ArbitraryAfterError - ("typedSequentialExprBlockR", (6,22--6,24)), (6,2--6,24), - Yes, { ArrowRange = Some (6,22--6,24) - BarRange = Some (6,0--6,1) })], (2,0--6,24), - Yes (2,0--2,3), Yes (5,0--5,4), - { TryKeyword = (2,0--2,3) - TryToWithRange = (2,0--5,4) - WithKeyword = (5,0--5,4) - WithToEndRange = (5,0--6,24) }), (2,0--6,24))], - PreXmlDocEmpty, [], None, (2,0--7,0), { LeadingKeyword = None })], - (true, true), { ConditionalDirectives = [] - CodeComments = [] }, set [])) - -(7,0)-(7,0) parse warning Possible incorrect indentation: this token is offside of context started at position (2:1). Try indenting this token further or using standard formatting conventions. -(7,0)-(7,0) parse error Incomplete structured construct at or before this point in pattern matching diff --git a/tests/service/data/SyntaxTree/Member/Do 01.fs b/tests/service/data/SyntaxTree/Member/Do 01.fs new file mode 100644 index 00000000000..dd05f237151 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Do 01.fs @@ -0,0 +1,7 @@ +module Module + +type T = + + do 1 + + do 2 diff --git a/tests/service/data/SyntaxTree/Member/Do 01.fs.bsl b/tests/service/data/SyntaxTree/Member/Do 01.fs.bsl new file mode 100644 index 00000000000..5f63d7bdc38 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Do 01.fs.bsl @@ -0,0 +1,43 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Do 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (5,4--5,8)), None, + Const (Int32 1, (5,7--5,8)), (5,4--5,8), NoneAtDo, + { LeadingKeyword = Do (5,4--5,6) + InlineKeyword = None + EqualsRange = None })], false, false, (5,4--5,8)); + LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (7,4--7,8)), None, + Const (Int32 2, (7,7--7,8)), (7,4--7,8), NoneAtDo, + { LeadingKeyword = Do (7,4--7,6) + InlineKeyword = None + EqualsRange = None })], false, false, (7,4--7,8))], + (5,4--7,8)), [], None, (3,5--7,8), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--7,8))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,8), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Member/Do 02.fs b/tests/service/data/SyntaxTree/Member/Do 02.fs new file mode 100644 index 00000000000..04b8bc76080 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Do 02.fs @@ -0,0 +1,7 @@ +module Module + +type T = + + static do 1 + + do 2 diff --git a/tests/service/data/SyntaxTree/Member/Do 02.fs.bsl b/tests/service/data/SyntaxTree/Member/Do 02.fs.bsl new file mode 100644 index 00000000000..1585d6135ee --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Do 02.fs.bsl @@ -0,0 +1,45 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Do 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (5,11--5,15)), None, + Const (Int32 1, (5,14--5,15)), (5,11--5,15), + NoneAtDo, + { LeadingKeyword = + StaticDo ((5,4--5,10), (5,11--5,13)) + InlineKeyword = None + EqualsRange = None })], true, false, (5,4--5,15)); + LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (7,4--7,8)), None, + Const (Int32 2, (7,7--7,8)), (7,4--7,8), NoneAtDo, + { LeadingKeyword = Do (7,4--7,6) + InlineKeyword = None + EqualsRange = None })], false, false, (7,4--7,8))], + (5,4--7,8)), [], None, (3,5--7,8), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--7,8))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,8), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Member/Do 03.fs b/tests/service/data/SyntaxTree/Member/Do 03.fs new file mode 100644 index 00000000000..20af212fa04 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Do 03.fs @@ -0,0 +1,7 @@ +module Module + +type T = + + static do + + do () diff --git a/tests/service/data/SyntaxTree/Member/Do 03.fs.bsl b/tests/service/data/SyntaxTree/Member/Do 03.fs.bsl new file mode 100644 index 00000000000..6634a59f3f2 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Do 03.fs.bsl @@ -0,0 +1,49 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Do 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (5,11--5,13)), None, + ArbitraryAfterError + ("typedSequentialExprBlock1", (5,13--5,13)), + (5,11--5,13), NoneAtDo, + { LeadingKeyword = + StaticDo ((5,4--5,10), (5,11--5,13)) + InlineKeyword = None + EqualsRange = None })], true, false, (5,4--5,13)); + LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (7,4--7,9)), None, + Const (Unit, (7,7--7,9)), (7,4--7,9), NoneAtDo, + { LeadingKeyword = Do (7,4--7,6) + InlineKeyword = None + EqualsRange = None })], false, false, (7,4--7,9))], + (5,4--7,9)), [], None, (3,5--7,9), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--7,9))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,9), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,4)-(7,6) parse error Possible incorrect indentation: this token is offside of context started at position (5:5). Try indenting this token further or using standard formatting conventions. +(7,4)-(7,6) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/Member/Interface 01.fs b/tests/service/data/SyntaxTree/Member/Interface 01.fs new file mode 100644 index 00000000000..6e79c5012a6 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 01.fs @@ -0,0 +1,7 @@ +module Module + +type T = + interface I with + override this.P1 = 1 + + member this.P2 = 1 diff --git a/tests/service/data/SyntaxTree/Member/Interface 01.fs.bsl b/tests/service/data/SyntaxTree/Member/Interface 01.fs.bsl new file mode 100644 index 00000000000..332508f43f8 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 01.fs.bsl @@ -0,0 +1,74 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Interface 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [Interface + (LongIdent (SynLongIdent ([I], [], [None])), + Some (4,16--4,20), + Some + [Member + (SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((5,8), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (Some + { IsInstance = true + IsDispatchSlot = false + IsOverrideOrExplicitImpl = true + IsFinal = false + GetterOrSetterIsCompilerGenerated = + false + MemberKind = Member }, + SynValInfo + ([[SynArgInfo ([], false, None)]; []], + SynArgInfo ([], false, None)), None), + LongIdent + (SynLongIdent + ([this; P1], [(5,21--5,22)], [None; None]), + None, None, Pats [], None, (5,17--5,24)), + None, Const (Int32 1, (5,27--5,28)), + (5,17--5,24), NoneAtInvisible, + { LeadingKeyword = Override (5,8--5,16) + InlineKeyword = None + EqualsRange = Some (5,25--5,26) }), + (5,8--5,28))], (4,4--5,28)); + Member + (SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((7,4), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (Some { IsInstance = true + IsDispatchSlot = false + IsOverrideOrExplicitImpl = false + IsFinal = false + GetterOrSetterIsCompilerGenerated = false + MemberKind = Member }, + SynValInfo + ([[SynArgInfo ([], false, None)]; []], + SynArgInfo ([], false, None)), None), + LongIdent + (SynLongIdent + ([this; P2], [(7,15--7,16)], [None; None]), + None, None, Pats [], None, (7,11--7,18)), None, + Const (Int32 1, (7,21--7,22)), (7,11--7,18), + NoneAtInvisible, + { LeadingKeyword = Member (7,4--7,10) + InlineKeyword = None + EqualsRange = Some (7,19--7,20) }), (7,4--7,22))], + (4,4--7,22)), [], None, (3,5--7,22), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--7,22))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,22), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Member/Interface 02.fs b/tests/service/data/SyntaxTree/Member/Interface 02.fs new file mode 100644 index 00000000000..ba57df3cb27 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 02.fs @@ -0,0 +1,6 @@ +module Module + +type T = + interface I with + + member this.P = 1 diff --git a/tests/service/data/SyntaxTree/Member/Interface 02.fs.bsl b/tests/service/data/SyntaxTree/Member/Interface 02.fs.bsl new file mode 100644 index 00000000000..86a7a295554 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 02.fs.bsl @@ -0,0 +1,49 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Interface 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [Interface + (LongIdent (SynLongIdent ([I], [], [None])), + Some (4,16--4,20), Some [], (4,4--4,20)); + Member + (SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((6,4), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (Some { IsInstance = true + IsDispatchSlot = false + IsOverrideOrExplicitImpl = false + IsFinal = false + GetterOrSetterIsCompilerGenerated = false + MemberKind = Member }, + SynValInfo + ([[SynArgInfo ([], false, None)]; []], + SynArgInfo ([], false, None)), None), + LongIdent + (SynLongIdent + ([this; P], [(6,15--6,16)], [None; None]), None, + None, Pats [], None, (6,11--6,17)), None, + Const (Int32 1, (6,20--6,21)), (6,11--6,17), + NoneAtInvisible, + { LeadingKeyword = Member (6,4--6,10) + InlineKeyword = None + EqualsRange = Some (6,18--6,19) }), (6,4--6,21))], + (4,4--6,21)), [], None, (3,5--6,21), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--6,21))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,21), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(6,4)-(6,21) parse error Possible incorrect indentation: this token is offside of context started at position (4:5). Try indenting this token further or using standard formatting conventions. diff --git a/tests/service/data/SyntaxTree/Member/Interface 03.fs b/tests/service/data/SyntaxTree/Member/Interface 03.fs new file mode 100644 index 00000000000..4f0ab0136b8 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 03.fs @@ -0,0 +1,4 @@ +module Module + +type T = + interface I with diff --git a/tests/service/data/SyntaxTree/Member/Interface 03.fs.bsl b/tests/service/data/SyntaxTree/Member/Interface 03.fs.bsl new file mode 100644 index 00000000000..8f563d2c61a --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 03.fs.bsl @@ -0,0 +1,23 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Interface 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [Interface + (LongIdent (SynLongIdent ([I], [], [None])), + Some (4,16--4,20), Some [], (4,4--4,20))], (4,4--4,20)), + [], None, (3,5--4,20), { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--4,20))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--4,20), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Member/Interface 04.fs b/tests/service/data/SyntaxTree/Member/Interface 04.fs new file mode 100644 index 00000000000..1ff96d9d952 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 04.fs @@ -0,0 +1,6 @@ +module Module + +type T = + interface I with + +type T2 = int diff --git a/tests/service/data/SyntaxTree/Member/Interface 04.fs.bsl b/tests/service/data/SyntaxTree/Member/Interface 04.fs.bsl new file mode 100644 index 00000000000..20db259a02e --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 04.fs.bsl @@ -0,0 +1,36 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Interface 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [Interface + (LongIdent (SynLongIdent ([I], [], [None])), + Some (4,16--4,20), Some [], (4,4--4,20))], (4,4--4,20)), + [], None, (3,5--4,20), { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--4,20)); + Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T2], + PreXmlDoc ((6,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (6,5--6,7)), + Simple + (TypeAbbrev + (Ok, LongIdent (SynLongIdent ([int], [], [None])), + (6,10--6,13)), (6,10--6,13)), [], None, (6,5--6,13), + { LeadingKeyword = Type (6,0--6,4) + EqualsRange = Some (6,8--6,9) + WithKeyword = None })], (6,0--6,13))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,13), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Member/Interface 05.fs b/tests/service/data/SyntaxTree/Member/Interface 05.fs new file mode 100644 index 00000000000..a2cb06257fe --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 05.fs @@ -0,0 +1,6 @@ +module Module + +type T = + interface I with + +let x = 1 diff --git a/tests/service/data/SyntaxTree/Member/Interface 05.fs.bsl b/tests/service/data/SyntaxTree/Member/Interface 05.fs.bsl new file mode 100644 index 00000000000..1394c744330 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Interface 05.fs.bsl @@ -0,0 +1,35 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Interface 05.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [Interface + (LongIdent (SynLongIdent ([I], [], [None])), + Some (4,16--4,20), Some [], (4,4--4,20))], (4,4--4,20)), + [], None, (3,5--4,20), { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--4,20)); + Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((6,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Named (SynIdent (x, None), false, None, (6,4--6,5)), None, + Const (Int32 1, (6,8--6,9)), (6,4--6,5), Yes (6,0--6,9), + { LeadingKeyword = Let (6,0--6,3) + InlineKeyword = None + EqualsRange = Some (6,6--6,7) })], (6,0--6,9))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,9), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Member/Let 01.fs b/tests/service/data/SyntaxTree/Member/Let 01.fs new file mode 100644 index 00000000000..aee35e5d8dc --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Let 01.fs @@ -0,0 +1,7 @@ +module Module + +type T = + + let _ = 1 + + do 2 diff --git a/tests/service/data/SyntaxTree/Member/Let 01.fs.bsl b/tests/service/data/SyntaxTree/Member/Let 01.fs.bsl new file mode 100644 index 00000000000..c4071e92b4f --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Let 01.fs.bsl @@ -0,0 +1,46 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Let 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [LetBindings + ([SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((5,4), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Wild (5,8--5,9), None, + Const (Int32 1, (5,12--5,13)), (5,8--5,9), + Yes (5,4--5,13), + { LeadingKeyword = Let (5,4--5,7) + InlineKeyword = None + EqualsRange = Some (5,10--5,11) })], false, false, + (5,4--5,13)); + LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (7,4--7,8)), None, + Const (Int32 2, (7,7--7,8)), (7,4--7,8), NoneAtDo, + { LeadingKeyword = Do (7,4--7,6) + InlineKeyword = None + EqualsRange = None })], false, false, (7,4--7,8))], + (5,4--7,8)), [], None, (3,5--7,8), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--7,8))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,8), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Member/Let 02.fs b/tests/service/data/SyntaxTree/Member/Let 02.fs new file mode 100644 index 00000000000..4c2c31962e9 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Let 02.fs @@ -0,0 +1,7 @@ +module Module + +type T = + + let _ = + + do 2 diff --git a/tests/service/data/SyntaxTree/Member/Let 02.fs.bsl b/tests/service/data/SyntaxTree/Member/Let 02.fs.bsl new file mode 100644 index 00000000000..baa44f75d45 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Let 02.fs.bsl @@ -0,0 +1,49 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Let 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [LetBindings + ([SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((5,4), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Wild (5,8--5,9), None, + ArbitraryAfterError ("localBinding1", (5,11--5,11)), + (5,8--5,9), Yes (5,8--5,11), + { LeadingKeyword = Let (5,4--5,7) + InlineKeyword = None + EqualsRange = Some (5,10--5,11) })], false, false, + (5,4--5,11)); + LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (7,4--7,8)), None, + Const (Int32 2, (7,7--7,8)), (7,4--7,8), NoneAtDo, + { LeadingKeyword = Do (7,4--7,6) + InlineKeyword = None + EqualsRange = None })], false, false, (7,4--7,8))], + (5,4--7,8)), [], None, (3,5--7,8), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--7,8))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,8), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,4)-(7,6) parse error Possible incorrect indentation: this token is offside of context started at position (5:5). Try indenting this token further or using standard formatting conventions. +(7,4)-(7,6) parse error Incomplete structured construct at or before this point in binding diff --git a/tests/service/data/SyntaxTree/Member/Let 03.fs b/tests/service/data/SyntaxTree/Member/Let 03.fs new file mode 100644 index 00000000000..ab3301ce1f4 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Let 03.fs @@ -0,0 +1,7 @@ +module Module + +type T = + + let _ + + do 2 diff --git a/tests/service/data/SyntaxTree/Member/Let 03.fs.bsl b/tests/service/data/SyntaxTree/Member/Let 03.fs.bsl new file mode 100644 index 00000000000..01cb91bbe95 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Let 03.fs.bsl @@ -0,0 +1,47 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Let 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [LetBindings + ([SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((5,4), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Wild (5,8--5,9), None, + ArbitraryAfterError ("localBinding2", (5,9--5,9)), + (5,8--5,9), Yes (5,4--5,9), + { LeadingKeyword = Let (5,4--5,7) + InlineKeyword = None + EqualsRange = None })], false, false, (5,4--5,9)); + LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (7,4--7,8)), None, + Const (Int32 2, (7,7--7,8)), (7,4--7,8), NoneAtDo, + { LeadingKeyword = Do (7,4--7,6) + InlineKeyword = None + EqualsRange = None })], false, false, (7,4--7,8))], + (5,4--7,8)), [], None, (3,5--7,8), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--7,8))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,8), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,4)-(7,6) parse error Incomplete structured construct at or before this point in binding. Expected '=' or other token. diff --git a/tests/service/data/SyntaxTree/Member/Let 04.fs b/tests/service/data/SyntaxTree/Member/Let 04.fs new file mode 100644 index 00000000000..16617f67ba0 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Let 04.fs @@ -0,0 +1,7 @@ +module Module + +type T = + + let + + do 2 diff --git a/tests/service/data/SyntaxTree/Member/Let 04.fs.bsl b/tests/service/data/SyntaxTree/Member/Let 04.fs.bsl new file mode 100644 index 00000000000..439bf0d6cb7 --- /dev/null +++ b/tests/service/data/SyntaxTree/Member/Let 04.fs.bsl @@ -0,0 +1,35 @@ +ImplFile + (ParsedImplFileInput + ("/root/Member/Let 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Types + ([SynTypeDefn + (SynComponentInfo + ([], None, [], [T], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + false, None, (3,5--3,6)), + ObjectModel + (Unspecified, + [LetBindings ([], false, false, (5,4--5,7)); + LetBindings + ([SynBinding + (None, Do, false, false, [], PreXmlDocEmpty, + SynValData + (None, + SynValInfo ([], SynArgInfo ([], false, None)), + None), Const (Unit, (7,4--7,8)), None, + Const (Int32 2, (7,7--7,8)), (7,4--7,8), NoneAtDo, + { LeadingKeyword = Do (7,4--7,6) + InlineKeyword = None + EqualsRange = None })], false, false, (7,4--7,8))], + (5,4--7,8)), [], None, (3,5--7,8), + { LeadingKeyword = Type (3,0--3,4) + EqualsRange = Some (3,7--3,8) + WithKeyword = None })], (3,0--7,8))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,8), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(7,4)-(7,6) parse error Incomplete structured construct at or before this point in binding diff --git a/tests/service/data/SyntaxTree/ModuleMember/Do 03.fs.bsl b/tests/service/data/SyntaxTree/ModuleMember/Do 03.fs.bsl new file mode 100644 index 00000000000..1bc84f9a9d4 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Do 03.fs.bsl @@ -0,0 +1,11 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleMember/Do 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr (Do (Const (Int32 1, (4,2--4,3)), (3,0--4,3)), (3,0--4,3)); + Expr (Const (Int32 2, (7,0--7,1)), (7,0--7,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--7,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/ModuleMember/Do 04.fs b/tests/service/data/SyntaxTree/ModuleMember/Do 04.fs new file mode 100644 index 00000000000..90dbc65186d --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Do 04.fs @@ -0,0 +1,6 @@ +module Module + +do +done + +2 diff --git a/tests/service/data/SyntaxTree/ModuleMember/Do 04.fs.bsl b/tests/service/data/SyntaxTree/ModuleMember/Do 04.fs.bsl new file mode 100644 index 00000000000..6738b7e6e95 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Do 04.fs.bsl @@ -0,0 +1,16 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleMember/Do 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Expr + (Do + (ArbitraryAfterError ("typedSequentialExprBlock1", (4,4--4,4)), + (3,0--4,4)), (3,0--4,4)); + Expr (Const (Int32 2, (6,0--6,1)), (6,0--6,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(4,0)-(4,4) parse error Expecting expression diff --git a/tests/service/data/SyntaxTree/ModuleMember/Let 01.fs b/tests/service/data/SyntaxTree/ModuleMember/Let 01.fs new file mode 100644 index 00000000000..48157b1e061 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Let 01.fs @@ -0,0 +1,5 @@ +module Module + +let _ = 1 + +2 diff --git a/tests/service/data/SyntaxTree/ModuleMember/Let 01.fs.bsl b/tests/service/data/SyntaxTree/ModuleMember/Let 01.fs.bsl new file mode 100644 index 00000000000..92101cded07 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Let 01.fs.bsl @@ -0,0 +1,21 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleMember/Let 01.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, Const (Int32 1, (3,8--3,9)), (3,4--3,5), + Yes (3,0--3,9), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--3,9)); Expr (Const (Int32 2, (5,0--5,1)), (5,0--5,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/ModuleMember/Let 02.fs b/tests/service/data/SyntaxTree/ModuleMember/Let 02.fs new file mode 100644 index 00000000000..80c523f2e5c --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Let 02.fs @@ -0,0 +1,5 @@ +module Module + +let _ = + +1 diff --git a/tests/service/data/SyntaxTree/ModuleMember/Let 02.fs.bsl b/tests/service/data/SyntaxTree/ModuleMember/Let 02.fs.bsl new file mode 100644 index 00000000000..a2548d21418 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Let 02.fs.bsl @@ -0,0 +1,25 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleMember/Let 02.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + ArbitraryAfterError ("localBinding1", (3,7--3,7)), (3,4--3,5), + Yes (3,4--3,7), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = Some (3,6--3,7) })], + (3,0--3,7)); Expr (Const (Int32 1, (5,0--5,1)), (5,0--5,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,1) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse error Incomplete structured construct at or before this point in binding diff --git a/tests/service/data/SyntaxTree/ModuleMember/Let 03.fs b/tests/service/data/SyntaxTree/ModuleMember/Let 03.fs new file mode 100644 index 00000000000..04bb340003d --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Let 03.fs @@ -0,0 +1,5 @@ +module Module + +let _ + +1 diff --git a/tests/service/data/SyntaxTree/ModuleMember/Let 03.fs.bsl b/tests/service/data/SyntaxTree/ModuleMember/Let 03.fs.bsl new file mode 100644 index 00000000000..374a64bda0e --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Let 03.fs.bsl @@ -0,0 +1,24 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleMember/Let 03.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let + (false, + [SynBinding + (None, Normal, false, false, [], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), + SynValData + (None, SynValInfo ([], SynArgInfo ([], false, None)), None), + Wild (3,4--3,5), None, + ArbitraryAfterError ("localBinding2", (3,5--3,5)), (3,4--3,5), + Yes (3,0--3,5), { LeadingKeyword = Let (3,0--3,3) + InlineKeyword = None + EqualsRange = None })], (3,0--3,5)); + Expr (Const (Int32 1, (5,0--5,1)), (5,0--5,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,1) parse error Incomplete structured construct at or before this point in binding. Expected '=' or other token. diff --git a/tests/service/data/SyntaxTree/ModuleMember/Let 04.fs b/tests/service/data/SyntaxTree/ModuleMember/Let 04.fs new file mode 100644 index 00000000000..bc98a5318d9 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Let 04.fs @@ -0,0 +1,5 @@ +module Module + +let + +1 diff --git a/tests/service/data/SyntaxTree/ModuleMember/Let 04.fs.bsl b/tests/service/data/SyntaxTree/ModuleMember/Let 04.fs.bsl new file mode 100644 index 00000000000..7d2f30db848 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleMember/Let 04.fs.bsl @@ -0,0 +1,13 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleMember/Let 04.fs", false, QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [Let (false, [], (3,0--3,3)); + Expr (Const (Int32 1, (5,0--5,1)), (5,0--5,1))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,1), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,1) parse error Incomplete structured construct at or before this point in binding diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/ModuleRangeShouldStartAtFirstAttribute.fs b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module - Attribute 01.fs similarity index 100% rename from tests/service/data/SyntaxTree/ModuleOrNamespace/ModuleRangeShouldStartAtFirstAttribute.fs rename to tests/service/data/SyntaxTree/ModuleOrNamespace/Module - Attribute 01.fs diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/ModuleRangeShouldStartAtFirstAttribute.fs.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module - Attribute 01.fs.bsl similarity index 95% rename from tests/service/data/SyntaxTree/ModuleOrNamespace/ModuleRangeShouldStartAtFirstAttribute.fs.bsl rename to tests/service/data/SyntaxTree/ModuleOrNamespace/Module - Attribute 01.fs.bsl index b5a796f8d11..70ca7f64fdb 100644 --- a/tests/service/data/SyntaxTree/ModuleOrNamespace/ModuleRangeShouldStartAtFirstAttribute.fs.bsl +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module - Attribute 01.fs.bsl @@ -1,6 +1,6 @@ ImplFile (ParsedImplFileInput - ("/root/ModuleOrNamespace/ModuleRangeShouldStartAtFirstAttribute.fs", false, + ("/root/ModuleOrNamespace/Module - Attribute 01.fs", false, QualifiedNameOfFile Bar, [], [], [SynModuleOrNamespace ([Bar], false, NamedModule, diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/EmptyModuleOrNamespaceShouldBePresent.fs b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 01.fs similarity index 100% rename from tests/service/data/SyntaxTree/ModuleOrNamespace/EmptyModuleOrNamespaceShouldBePresent.fs rename to tests/service/data/SyntaxTree/ModuleOrNamespace/Module 01.fs diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/EmptyModuleOrNamespaceShouldBePresent.fs.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 01.fs.bsl similarity index 73% rename from tests/service/data/SyntaxTree/ModuleOrNamespace/EmptyModuleOrNamespaceShouldBePresent.fs.bsl rename to tests/service/data/SyntaxTree/ModuleOrNamespace/Module 01.fs.bsl index d0ee2ef228d..253b83115a7 100644 --- a/tests/service/data/SyntaxTree/ModuleOrNamespace/EmptyModuleOrNamespaceShouldBePresent.fs.bsl +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 01.fs.bsl @@ -1,7 +1,7 @@ ImplFile (ParsedImplFileInput - ("/root/ModuleOrNamespace/EmptyModuleOrNamespaceShouldBePresent.fs", false, - QualifiedNameOfFile A.B.C, [], [], + ("/root/ModuleOrNamespace/Module 01.fs", false, QualifiedNameOfFile A.B.C, + [], [], [SynModuleOrNamespace ([A; B; C], false, NamedModule, [], PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 02.fs b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 02.fs new file mode 100644 index 00000000000..3cac9e7093c --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 02.fs @@ -0,0 +1,3 @@ +module A.B.C + +() \ No newline at end of file diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 02.fs.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 02.fs.bsl new file mode 100644 index 00000000000..1ca7710dfcb --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 02.fs.bsl @@ -0,0 +1,11 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleOrNamespace/Module 02.fs", false, QualifiedNameOfFile A.B.C, + [], [], + [SynModuleOrNamespace + ([A; B; C], false, NamedModule, + [Expr (Const (Unit, (3,0--3,2)), (3,0--3,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 03.fs b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 03.fs new file mode 100644 index 00000000000..d124e37da64 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 03.fs @@ -0,0 +1,3 @@ +module A.B.C + + () diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 03.fs.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 03.fs.bsl new file mode 100644 index 00000000000..f71a5daa644 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 03.fs.bsl @@ -0,0 +1,11 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleOrNamespace/Module 03.fs", false, QualifiedNameOfFile A.B.C, + [], [], + [SynModuleOrNamespace + ([A; B; C], false, NamedModule, + [Expr (Const (Unit, (3,2--3,4)), (3,2--3,4))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--3,4), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 04.fs b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 04.fs new file mode 100644 index 00000000000..ceb66b29dc0 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 04.fs @@ -0,0 +1,3 @@ + module A.B.C + +() diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 04.fs.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 04.fs.bsl new file mode 100644 index 00000000000..e7b02633b1a --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Module 04.fs.bsl @@ -0,0 +1,16 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleOrNamespace/Module 04.fs", false, QualifiedNameOfFile A.B.C, + [], [], + [SynModuleOrNamespace + ([A; B; C], false, NamedModule, + [Expr (Const (Unit, (3,0--3,2)), (3,0--3,2))], + PreXmlDoc ((1,2), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,2--3,2), { LeadingKeyword = Module (1,2--1,8) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(3,0)-(3,1) parse error Possible incorrect indentation: this token is offside of context started at position (1:3). Try indenting this token further or using standard formatting conventions. +(3,0)-(3,1) parse error Possible incorrect indentation: this token is offside of context started at position (1:3). Try indenting this token further or using standard formatting conventions. +(3,1)-(3,2) parse error Possible incorrect indentation: this token is offside of context started at position (1:3). Try indenting this token further or using standard formatting conventions. +(3,0)-(3,1) parse error Possible incorrect indentation: this token is offside of context started at position (1:3). Try indenting this token further or using standard formatting conventions. diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 01.fs b/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 01.fs new file mode 100644 index 00000000000..000af565b8b --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 01.fs @@ -0,0 +1,6 @@ +module Module + +module A = + () + +() diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 01.fs.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 01.fs.bsl new file mode 100644 index 00000000000..8b74425f9b6 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 01.fs.bsl @@ -0,0 +1,19 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleOrNamespace/Nested module 01.fs", false, + QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [NestedModule + (SynComponentInfo + ([], None, [], [A], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), false, + None, (3,0--3,8)), false, + [Expr (Const (Unit, (4,4--4,6)), (4,4--4,6))], false, (3,0--4,6), + { ModuleKeyword = Some (3,0--3,6) + EqualsRange = Some (3,9--3,10) }); + Expr (Const (Unit, (6,0--6,2)), (6,0--6,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 02.fs b/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 02.fs new file mode 100644 index 00000000000..b5ebbffea70 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 02.fs @@ -0,0 +1,5 @@ +module Module + +module A = + +() diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 02.fs.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 02.fs.bsl new file mode 100644 index 00000000000..469d265b08c --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespace/Nested module 02.fs.bsl @@ -0,0 +1,21 @@ +ImplFile + (ParsedImplFileInput + ("/root/ModuleOrNamespace/Nested module 02.fs", false, + QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespace + ([Module], false, NamedModule, + [NestedModule + (SynComponentInfo + ([], None, [], [A], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), false, + None, (3,0--3,8)), false, [], false, (3,0--3,10), + { ModuleKeyword = Some (3,0--3,6) + EqualsRange = Some (3,9--3,10) }); + Expr (Const (Unit, (5,0--5,2)), (5,0--5,2))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--5,2), { LeadingKeyword = Module (1,0--1,6) })], (true, true), + { ConditionalDirectives = [] + CodeComments = [] }, set [])) + +(5,0)-(5,1) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,1) parse error Incomplete structured construct at or before this point in definition diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/NamespaceShouldContainNamespaceKeyword.fsi b/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Namespace - Keyword 01.fsi similarity index 65% rename from tests/service/data/SyntaxTree/ModuleOrNamespaceSig/NamespaceShouldContainNamespaceKeyword.fsi rename to tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Namespace - Keyword 01.fsi index c79ecb70a48..c087ed5addf 100644 --- a/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/NamespaceShouldContainNamespaceKeyword.fsi +++ b/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Namespace - Keyword 01.fsi @@ -1,4 +1,4 @@ - namespace Foo + module Bar = -val a: int + val a: int diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/NamespaceShouldContainNamespaceKeyword.fsi.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Namespace - Keyword 01.fsi.bsl similarity index 56% rename from tests/service/data/SyntaxTree/ModuleOrNamespaceSig/NamespaceShouldContainNamespaceKeyword.fsi.bsl rename to tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Namespace - Keyword 01.fsi.bsl index d6b76248280..572fc320cb0 100644 --- a/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/NamespaceShouldContainNamespaceKeyword.fsi.bsl +++ b/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Namespace - Keyword 01.fsi.bsl @@ -1,7 +1,7 @@ SigFile (ParsedSigFileInput - ("/root/ModuleOrNamespaceSig/NamespaceShouldContainNamespaceKeyword.fsi", - QualifiedNameOfFile NamespaceShouldContainNamespaceKeyword, [], [], + ("/root/ModuleOrNamespaceSig/Namespace - Keyword 01.fsi", + QualifiedNameOfFile Namespace - Keyword 01, [], [], [SynModuleOrNamespaceSig ([Foo], false, DeclaredNamespace, [NestedModule @@ -14,17 +14,14 @@ SigFile ([], SynIdent (a, None), SynValTyparDecls (None, true), LongIdent (SynLongIdent ([int], [], [None])), SynValInfo ([], SynArgInfo ([], false, None)), false, false, - PreXmlDoc ((4,0), FSharp.Compiler.Xml.XmlDocCollector), - None, None, (4,0--4,10), { LeadingKeyword = Val (4,0--4,3) + PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), + None, None, (4,4--4,14), { LeadingKeyword = Val (4,4--4,7) InlineKeyword = None WithKeyword = None EqualsRange = None }), - (4,0--4,10))], (3,0--4,10), + (4,4--4,14))], (3,0--4,14), { ModuleKeyword = Some (3,0--3,6) EqualsRange = Some (3,11--3,12) })], PreXmlDocEmpty, [], None, - (2,0--4,10), { LeadingKeyword = Namespace (2,0--2,9) })], + (1,0--4,14), { LeadingKeyword = Namespace (1,0--1,9) })], { ConditionalDirectives = [] CodeComments = [] }, set [])) - -(4,0)-(4,3) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. -(4,0)-(4,3) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Nested module 01.fsi b/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Nested module 01.fsi new file mode 100644 index 00000000000..c62b6b4c0b9 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Nested module 01.fsi @@ -0,0 +1,6 @@ +module Module + +module A = + val a: int + +val b: int diff --git a/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Nested module 01.fsi.bsl b/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Nested module 01.fsi.bsl new file mode 100644 index 00000000000..d9ab53d2628 --- /dev/null +++ b/tests/service/data/SyntaxTree/ModuleOrNamespaceSig/Nested module 01.fsi.bsl @@ -0,0 +1,37 @@ +SigFile + (ParsedSigFileInput + ("/root/ModuleOrNamespaceSig/Nested module 01.fsi", + QualifiedNameOfFile Module, [], [], + [SynModuleOrNamespaceSig + ([Module], false, NamedModule, + [NestedModule + (SynComponentInfo + ([], None, [], [A], + PreXmlDoc ((3,0), FSharp.Compiler.Xml.XmlDocCollector), false, + None, (3,0--3,8)), false, + [Val + (SynValSig + ([], SynIdent (a, None), SynValTyparDecls (None, true), + LongIdent (SynLongIdent ([int], [], [None])), + SynValInfo ([], SynArgInfo ([], false, None)), false, false, + PreXmlDoc ((4,4), FSharp.Compiler.Xml.XmlDocCollector), + None, None, (4,4--4,14), { LeadingKeyword = Val (4,4--4,7) + InlineKeyword = None + WithKeyword = None + EqualsRange = None }), + (4,4--4,14))], (3,0--4,14), { ModuleKeyword = Some (3,0--3,6) + EqualsRange = Some (3,9--3,10) }); + Val + (SynValSig + ([], SynIdent (b, None), SynValTyparDecls (None, true), + LongIdent (SynLongIdent ([int], [], [None])), + SynValInfo ([], SynArgInfo ([], false, None)), false, false, + PreXmlDoc ((6,0), FSharp.Compiler.Xml.XmlDocCollector), None, + None, (6,0--6,10), { LeadingKeyword = Val (6,0--6,3) + InlineKeyword = None + WithKeyword = None + EqualsRange = None }), (6,0--6,10))], + PreXmlDoc ((1,0), FSharp.Compiler.Xml.XmlDocCollector), [], None, + (1,0--6,10), { LeadingKeyword = Module (1,0--1,6) })], + { ConditionalDirectives = [] + CodeComments = [] }, set [])) diff --git a/tests/service/data/SyntaxTree/Pattern/Tuple - Recover 01.fs.bsl b/tests/service/data/SyntaxTree/Pattern/Tuple - Recover 01.fs.bsl index 40252f6ab16..022b45253b1 100644 --- a/tests/service/data/SyntaxTree/Pattern/Tuple - Recover 01.fs.bsl +++ b/tests/service/data/SyntaxTree/Pattern/Tuple - Recover 01.fs.bsl @@ -24,7 +24,7 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(5,0)-(5,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(5,0)-(5,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. (5,0)-(5,0) parse error Incomplete structured construct at or before this point in binding (4,8)-(4,9) parse error Expecting pattern (5,0)-(5,0) parse error Unexpected end of input in value, function or member definition diff --git a/tests/service/data/SyntaxTree/Pattern/Tuple - Recover 02.fs.bsl b/tests/service/data/SyntaxTree/Pattern/Tuple - Recover 02.fs.bsl index bac969ce6b8..f8771e93093 100644 --- a/tests/service/data/SyntaxTree/Pattern/Tuple - Recover 02.fs.bsl +++ b/tests/service/data/SyntaxTree/Pattern/Tuple - Recover 02.fs.bsl @@ -25,7 +25,7 @@ ImplFile { ConditionalDirectives = [] CodeComments = [] }, set [])) -(4,0)-(4,0) parse warning Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. +(4,0)-(4,0) parse error Possible incorrect indentation: this token is offside of context started at position (3:1). Try indenting this token further or using standard formatting conventions. (4,0)-(4,0) parse error Incomplete structured construct at or before this point in binding (4,0)-(4,0) parse error Unexpected end of input in value, function or member definition (3,0)-(3,3) parse error Incomplete value or function definition. If this is in an expression, the body of the expression must be indented to the same column as the 'let' keyword.