Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Compiler/Checking/CheckExpressions.fs
Original file line number Diff line number Diff line change
Expand Up @@ -5520,7 +5520,7 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE
TcNonControlFlowExpr env <| fun env ->
TcExprTuple cenv overallTy env tpenv (isExplicitStruct, args, m)

| SynExpr.AnonRecd (isStruct, withExprOpt, unsortedFieldExprs, mWholeExpr) ->
| SynExpr.AnonRecd (isStruct, withExprOpt, unsortedFieldExprs, mWholeExpr, _) ->
TcNonControlFlowExpr env <| fun env ->
TcPossiblyPropagatingExprLeafThenConvert (fun ty -> isAnonRecdTy g ty || isTyparTy g ty) cenv overallTy env mWholeExpr (fun overallTy ->
TcAnonRecdExpr cenv overallTy env tpenv (isStruct, withExprOpt, unsortedFieldExprs, mWholeExpr)
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Service/FSharpParseFileResults.fs
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput,

yield! walkExprs (fs |> List.choose (fun (SynExprRecordField (expr = e)) -> e))

| SynExpr.AnonRecd (_isStruct, copyExprOpt, fs, _) ->
| SynExpr.AnonRecd (copyInfo = copyExprOpt; recordFields = fs) ->
match copyExprOpt with
| Some (e, _) -> yield! walkExpr true e
| None -> ()
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/Service/ServiceParseTreeWalk.fs
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ module SyntaxTraversal =
| SynExpr.ArrayOrList (_, synExprList, _range) ->
synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) |> pick expr

| SynExpr.AnonRecd (_isStruct, copyOpt, synExprList, _range) ->
| SynExpr.AnonRecd (copyInfo = copyOpt; recordFields = synExprList) ->
[
match copyOpt with
| Some (expr, (withRange, _)) ->
Expand Down
3 changes: 2 additions & 1 deletion src/Compiler/SyntaxTree/SyntaxTree.fs
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,8 @@ type SynExpr =
isStruct: bool *
copyInfo: (SynExpr * BlockSeparator) option *
recordFields: (Ident * range option * SynExpr) list *
range: range
range: range *
trivia: SynExprAnonRecdTrivia

| ArrayOrList of isArray: bool * exprs: SynExpr list * range: range

Expand Down
3 changes: 2 additions & 1 deletion src/Compiler/SyntaxTree/SyntaxTree.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,8 @@ type SynExpr =
isStruct: bool *
copyInfo: (SynExpr * BlockSeparator) option *
recordFields: (Ident * range option * SynExpr) list *
range: range
range: range *
trivia: SynExprAnonRecdTrivia

/// F# syntax: [ e1; ...; en ], [| e1; ...; en |]
| ArrayOrList of isArray: bool * exprs: SynExpr list * range: range
Expand Down
2 changes: 1 addition & 1 deletion src/Compiler/SyntaxTree/SyntaxTreeOps.fs
Original file line number Diff line number Diff line change
Expand Up @@ -841,7 +841,7 @@ let rec synExprContainsError inpExpr =
| SynExpr.ArrayOrList (_, es, _)
| SynExpr.Tuple (_, es, _, _) -> walkExprs es

| SynExpr.AnonRecd (_, origExpr, flds, _) ->
| SynExpr.AnonRecd (copyInfo = origExpr; recordFields = flds) ->
(match origExpr with
| Some (e, _) -> walkExpr e
| None -> false)
Expand Down
3 changes: 3 additions & 0 deletions src/Compiler/SyntaxTree/SyntaxTrivia.fs
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ type SynExprMatchBangTrivia =
WithKeyword: range
}

[<NoEquality; NoComparison>]
type SynExprAnonRecdTrivia = { OpeningBraceRange: range }

[<NoEquality; NoComparison>]
type SynMatchClauseTrivia =
{
Expand Down
8 changes: 8 additions & 0 deletions src/Compiler/SyntaxTree/SyntaxTrivia.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,14 @@ type SynExprMatchBangTrivia =
WithKeyword: range
}

/// Represents additional information for SynExpr.AnonRecd
[<NoEquality; NoComparison>]
type SynExprAnonRecdTrivia =
{
/// The syntax range of the `{|` token.
OpeningBraceRange: range
}

/// Represents additional information for SynMatchClause
[<NoEquality; NoComparison>]
type SynMatchClauseTrivia =
Expand Down
34 changes: 19 additions & 15 deletions src/Compiler/pars.fsy
Original file line number Diff line number Diff line change
Expand Up @@ -4917,11 +4917,12 @@ braceBarExprCore:
flds |> List.choose (function
| SynExprRecordField((SynLongIdent([id], _, _), _), mEquals, Some e, _) -> Some (id, mEquals, e)
| SynExprRecordField((SynLongIdent([id], _, _), _), mEquals, None, _) -> Some (id, mEquals, arbExpr("anonField", id.idRange))
| _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None)
let m = rhs2 parseState 1 3
| _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None)
let mLeftBrace = rhs parseState 1
let mRightBrace = rhs parseState 3
(fun (mStruct: range option) ->
let m = match mStruct with | None -> m | Some mStruct -> unionRanges mStruct m
SynExpr.AnonRecd (mStruct.IsSome, orig, flds, m)) }
let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace
SynExpr.AnonRecd (mStruct.IsSome, orig, flds, m, { OpeningBraceRange = mLeftBrace })) }

| LBRACE_BAR recdExprCore recover
{ reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar())
Expand All @@ -4931,30 +4932,33 @@ braceBarExprCore:
| SynExprRecordField((SynLongIdent([id], _, _), _), mEquals, Some e, _) -> Some (id, mEquals, e)
| SynExprRecordField((SynLongIdent([id], _, _), _), mEquals, None, _) -> Some (id, mEquals, arbExpr("anonField", id.idRange))
| _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None)
let m = rhs2 parseState 1 2
let mLeftBrace = rhs parseState 1
let mExpr = rhs parseState 2
(fun (mStruct: range option) ->
let m = match mStruct with | None -> m | Some mStruct -> unionRanges mStruct m
SynExpr.AnonRecd (mStruct.IsSome, orig, flds, m)) }
let m = match mStruct with | None -> unionRanges mLeftBrace mExpr | Some mStruct -> unionRanges mStruct mExpr
SynExpr.AnonRecd (mStruct.IsSome, orig, flds, m, { OpeningBraceRange = mLeftBrace })) }

| LBRACE_BAR error bar_rbrace
{ // silent recovery
let m = rhs2 parseState 1 3
let mLeftBrace = rhs parseState 1
let mRightBrace = rhs parseState 3
(fun (mStruct: range option) ->
let m = match mStruct with | None -> m | Some mStruct -> unionRanges mStruct m
let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace
arbExpr("braceBarExpr", m)) }

| LBRACE_BAR recover
{ reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar())
let m = rhs2 parseState 1 1
let mLeftBrace = rhs parseState 1
(fun (mStruct: range option) ->
let m = match mStruct with | None -> m | Some mStruct -> unionRanges mStruct m
SynExpr.AnonRecd (mStruct.IsSome, None, [], m)) }
let m = match mStruct with | None -> mLeftBrace | Some mStruct -> unionRanges mStruct mLeftBrace
SynExpr.AnonRecd (mStruct.IsSome, None, [], m, { OpeningBraceRange = mLeftBrace })) }

| LBRACE_BAR bar_rbrace
{ let m = rhs2 parseState 1 2
{ let mLeftBrace = rhs parseState 1
let mRightBrace = rhs parseState 2
(fun (mStruct: range option) ->
let m = match mStruct with | None -> m | Some mStruct -> unionRanges mStruct m
SynExpr.AnonRecd (mStruct.IsSome, None, [], m)) }
let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace
SynExpr.AnonRecd (mStruct.IsSome, None, [], m, { OpeningBraceRange = mLeftBrace })) }

anonLambdaExpr:
| FUN atomicPatterns RARROW typedSequentialExprBlock
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6160,6 +6160,8 @@ FSharp.Compiler.Syntax.SynExpr+AddressOf: FSharp.Compiler.Text.Range opRange
FSharp.Compiler.Syntax.SynExpr+AddressOf: FSharp.Compiler.Text.Range range
FSharp.Compiler.Syntax.SynExpr+AnonRecd: Boolean get_isStruct()
FSharp.Compiler.Syntax.SynExpr+AnonRecd: Boolean isStruct
FSharp.Compiler.Syntax.SynExpr+AnonRecd: FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia get_trivia()
FSharp.Compiler.Syntax.SynExpr+AnonRecd: FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia trivia
FSharp.Compiler.Syntax.SynExpr+AnonRecd: FSharp.Compiler.Text.Range get_range()
FSharp.Compiler.Syntax.SynExpr+AnonRecd: FSharp.Compiler.Text.Range range
FSharp.Compiler.Syntax.SynExpr+AnonRecd: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr]] get_recordFields()
Expand Down Expand Up @@ -6899,7 +6901,7 @@ FSharp.Compiler.Syntax.SynExpr: Boolean get_IsWhile()
FSharp.Compiler.Syntax.SynExpr: Boolean get_IsYieldOrReturn()
FSharp.Compiler.Syntax.SynExpr: Boolean get_IsYieldOrReturnFrom()
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewAddressOf(Boolean, FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range, FSharp.Compiler.Text.Range)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewAnonRecd(Boolean, Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr]], FSharp.Compiler.Text.Range)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewAnonRecd(Boolean, Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr]], FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewApp(FSharp.Compiler.Syntax.ExprAtomicFlag, Boolean, FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewArbitraryAfterError(System.String, FSharp.Compiler.Text.Range)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewArrayOrList(Boolean, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr], FSharp.Compiler.Text.Range)
Expand Down Expand Up @@ -9327,6 +9329,10 @@ FSharp.Compiler.SyntaxTrivia.SynExprAndBangTrivia: Microsoft.FSharp.Core.FSharpO
FSharp.Compiler.SyntaxTrivia.SynExprAndBangTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_InKeyword()
FSharp.Compiler.SyntaxTrivia.SynExprAndBangTrivia: System.String ToString()
FSharp.Compiler.SyntaxTrivia.SynExprAndBangTrivia: Void .ctor(FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range])
FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia: FSharp.Compiler.Text.Range OpeningBraceRange
FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia: FSharp.Compiler.Text.Range get_OpeningBraceRange()
FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia: System.String ToString()
FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia: Void .ctor(FSharp.Compiler.Text.Range)
FSharp.Compiler.SyntaxTrivia.SynExprIfThenElseTrivia: Boolean IsElif
FSharp.Compiler.SyntaxTrivia.SynExprIfThenElseTrivia: Boolean get_IsElif()
FSharp.Compiler.SyntaxTrivia.SynExprIfThenElseTrivia: FSharp.Compiler.Text.Range IfKeyword
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6160,6 +6160,8 @@ FSharp.Compiler.Syntax.SynExpr+AddressOf: FSharp.Compiler.Text.Range opRange
FSharp.Compiler.Syntax.SynExpr+AddressOf: FSharp.Compiler.Text.Range range
FSharp.Compiler.Syntax.SynExpr+AnonRecd: Boolean get_isStruct()
FSharp.Compiler.Syntax.SynExpr+AnonRecd: Boolean isStruct
FSharp.Compiler.Syntax.SynExpr+AnonRecd: FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia get_trivia()
FSharp.Compiler.Syntax.SynExpr+AnonRecd: FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia trivia
FSharp.Compiler.Syntax.SynExpr+AnonRecd: FSharp.Compiler.Text.Range get_range()
FSharp.Compiler.Syntax.SynExpr+AnonRecd: FSharp.Compiler.Text.Range range
FSharp.Compiler.Syntax.SynExpr+AnonRecd: Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr]] get_recordFields()
Expand Down Expand Up @@ -6899,7 +6901,7 @@ FSharp.Compiler.Syntax.SynExpr: Boolean get_IsWhile()
FSharp.Compiler.Syntax.SynExpr: Boolean get_IsYieldOrReturn()
FSharp.Compiler.Syntax.SynExpr: Boolean get_IsYieldOrReturnFrom()
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewAddressOf(Boolean, FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range, FSharp.Compiler.Text.Range)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewAnonRecd(Boolean, Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr]], FSharp.Compiler.Text.Range)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewAnonRecd(Boolean, Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.Syntax.SynExpr,System.Tuple`2[FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Position]]]], Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr]], FSharp.Compiler.Text.Range, FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewApp(FSharp.Compiler.Syntax.ExprAtomicFlag, Boolean, FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Syntax.SynExpr, FSharp.Compiler.Text.Range)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewArbitraryAfterError(System.String, FSharp.Compiler.Text.Range)
FSharp.Compiler.Syntax.SynExpr: FSharp.Compiler.Syntax.SynExpr NewArrayOrList(Boolean, Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr], FSharp.Compiler.Text.Range)
Expand Down Expand Up @@ -9327,6 +9329,10 @@ FSharp.Compiler.SyntaxTrivia.SynExprAndBangTrivia: Microsoft.FSharp.Core.FSharpO
FSharp.Compiler.SyntaxTrivia.SynExprAndBangTrivia: Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] get_InKeyword()
FSharp.Compiler.SyntaxTrivia.SynExprAndBangTrivia: System.String ToString()
FSharp.Compiler.SyntaxTrivia.SynExprAndBangTrivia: Void .ctor(FSharp.Compiler.Text.Range, Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range])
FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia: FSharp.Compiler.Text.Range OpeningBraceRange
FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia: FSharp.Compiler.Text.Range get_OpeningBraceRange()
FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia: System.String ToString()
FSharp.Compiler.SyntaxTrivia.SynExprAnonRecdTrivia: Void .ctor(FSharp.Compiler.Text.Range)
FSharp.Compiler.SyntaxTrivia.SynExprIfThenElseTrivia: Boolean IsElif
FSharp.Compiler.SyntaxTrivia.SynExprIfThenElseTrivia: Boolean get_IsElif()
FSharp.Compiler.SyntaxTrivia.SynExprIfThenElseTrivia: FSharp.Compiler.Text.Range IfKeyword
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{| X = 1 |}
struct {| Y = 2 |}
{| |}
struct {| |}
{| null |}
struct {| null |}
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
ImplFile
(ParsedImplFileInput
("/root/Expression/AnonymousRecords-01.fs", false,
QualifiedNameOfFile AnonymousRecords-01, [], [],
[SynModuleOrNamespace
([AnonymousRecords-01], false, AnonModule,
[Expr
(AnonRecd
(false, None,
[(X, Some /root/Expression/AnonymousRecords-01.fs (1,5--1,6),
Const
(Int32 1,
/root/Expression/AnonymousRecords-01.fs (1,7--1,8)))],
/root/Expression/AnonymousRecords-01.fs (1,0--1,11),
{ OpeningBraceRange =
/root/Expression/AnonymousRecords-01.fs (1,0--1,2) }),
/root/Expression/AnonymousRecords-01.fs (1,0--1,11));
Expr
(AnonRecd
(true, None,
[(Y, Some /root/Expression/AnonymousRecords-01.fs (2,12--2,13),
Const
(Int32 2,
/root/Expression/AnonymousRecords-01.fs (2,14--2,15)))],
/root/Expression/AnonymousRecords-01.fs (2,0--2,18),
{ OpeningBraceRange =
/root/Expression/AnonymousRecords-01.fs (2,7--2,9) }),
/root/Expression/AnonymousRecords-01.fs (2,0--2,18));
Expr
(AnonRecd
(false, None, [],
/root/Expression/AnonymousRecords-01.fs (3,0--3,5),
{ OpeningBraceRange =
/root/Expression/AnonymousRecords-01.fs (3,0--3,2) }),
/root/Expression/AnonymousRecords-01.fs (3,0--3,5));
Expr
(AnonRecd
(true, None, [],
/root/Expression/AnonymousRecords-01.fs (4,0--4,12),
{ OpeningBraceRange =
/root/Expression/AnonymousRecords-01.fs (4,7--4,9) }),
/root/Expression/AnonymousRecords-01.fs (4,0--4,12));
Expr
(ArbitraryAfterError
("braceBarExpr",
/root/Expression/AnonymousRecords-01.fs (5,0--5,10)),
/root/Expression/AnonymousRecords-01.fs (5,0--5,10));
Expr
(ArbitraryAfterError
("braceBarExpr",
/root/Expression/AnonymousRecords-01.fs (6,0--6,17)),
/root/Expression/AnonymousRecords-01.fs (6,0--6,17))],
PreXmlDocEmpty, [], None,
/root/Expression/AnonymousRecords-01.fs (1,0--6,17),
{ LeadingKeyword = None })], (true, false),
{ ConditionalDirectives = []
CodeComments = [] }, set []))
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{| X = 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
ImplFile
(ParsedImplFileInput
("/root/Expression/AnonymousRecords-02.fs", false,
QualifiedNameOfFile AnonymousRecords-02, [], [],
[SynModuleOrNamespace
([AnonymousRecords-02], false, AnonModule,
[Expr
(AnonRecd
(false, None,
[(X, Some /root/Expression/AnonymousRecords-02.fs (1,5--1,6),
Const
(Int32 0,
/root/Expression/AnonymousRecords-02.fs (1,7--1,8)))],
/root/Expression/AnonymousRecords-02.fs (1,0--2,0),
{ OpeningBraceRange =
/root/Expression/AnonymousRecords-02.fs (1,0--1,2) }),
/root/Expression/AnonymousRecords-02.fs (1,0--2,0))],
PreXmlDocEmpty, [], None,
/root/Expression/AnonymousRecords-02.fs (1,0--2,0),
{ LeadingKeyword = None })], (true, false),
{ ConditionalDirectives = []
CodeComments = [] }, set []))
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
struct {| X = 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
ImplFile
(ParsedImplFileInput
("/root/Expression/AnonymousRecords-03.fs", false,
QualifiedNameOfFile AnonymousRecords-03, [], [],
[SynModuleOrNamespace
([AnonymousRecords-03], false, AnonModule,
[Expr
(AnonRecd
(true, None,
[(X, Some /root/Expression/AnonymousRecords-03.fs (1,12--1,13),
Const
(Int32 0,
/root/Expression/AnonymousRecords-03.fs (1,14--1,15)))],
/root/Expression/AnonymousRecords-03.fs (1,0--2,0),
{ OpeningBraceRange =
/root/Expression/AnonymousRecords-03.fs (1,7--1,9) }),
/root/Expression/AnonymousRecords-03.fs (1,0--2,0))],
PreXmlDocEmpty, [], None,
/root/Expression/AnonymousRecords-03.fs (1,0--2,0),
{ LeadingKeyword = None })], (true, false),
{ ConditionalDirectives = []
CodeComments = [] }, set []))
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{|
Loading