Skip to content

Commit dbe0364

Browse files
Remove speculative without nodes for now
1 parent cae4888 commit dbe0364

File tree

5 files changed

+15
-73
lines changed

5 files changed

+15
-73
lines changed

src/Compiler/Checking/Expressions/CheckExpressions.fs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7841,7 +7841,7 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m
78417841

78427842
loopFieldsAndSpreads spreadSrcs flds (i + 1) tpenv fieldsAndSpreads
78437843

7844-
| SynExprRecordFieldOrSpread.Spread (SynExprSpread (expr = expr; without = _without; range = m), _) :: fieldsAndSpreads ->
7844+
| SynExprRecordFieldOrSpread.Spread (SynExprSpread (expr = expr; range = m), _) :: fieldsAndSpreads ->
78457845
checkLanguageFeatureAndRecover g.langVersion LanguageFeature.RecordSpreads m
78467846

78477847
let flex = false
@@ -8144,7 +8144,7 @@ and TcNewAnonRecdExpr cenv (overallTy: TType) env tpenv (isStruct, unsortedField
81448144
// let a = {| A = 3 |}
81458145
// let b = {| A = "4" |}
81468146
// let c = {| ...a; ...b |} → {| A = "4" |}
8147-
| SynExprAnonRecordFieldOrSpread.Spread (SynExprSpread (expr = expr; without = _without; range = m), _) :: fieldsAndSpreads ->
8147+
| SynExprAnonRecordFieldOrSpread.Spread (SynExprSpread (expr = expr; range = m), _) :: fieldsAndSpreads ->
81488148
checkLanguageFeatureAndRecover g.langVersion LanguageFeature.RecordSpreads m
81498149

81508150
let flex = false
@@ -8399,7 +8399,7 @@ and TcCopyAndUpdateAnonRecdExpr cenv (overallTy: TType) env tpenv (isStruct, (or
83998399

84008400
collectFields spreadSrcs flds (i + 1) tpenv fieldsAndSpreads
84018401

8402-
| SynExprAnonRecordFieldOrSpread.Spread (SynExprSpread (expr = expr; without = _without; range = m), _) :: fieldsAndSpreads ->
8402+
| SynExprAnonRecordFieldOrSpread.Spread (SynExprSpread (expr = expr; range = m), _) :: fieldsAndSpreads ->
84038403
checkLanguageFeatureAndRecover g.langVersion LanguageFeature.RecordSpreads m
84048404

84058405
let flex = false

src/Compiler/Service/ServiceParseTreeWalk.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ module SyntaxTraversal =
572572
diveIntoSeparator offsideColumn scPosOpt copyOpt)
573573
| None -> ()
574574

575-
| SynExprRecordFieldOrSpread.Spread(SynExprSpread(spreadRange = spreadRange; expr = expr; without = _todo),
575+
| SynExprRecordFieldOrSpread.Spread(SynExprSpread(spreadRange = spreadRange; expr = expr),
576576
sepOpt) ->
577577
yield dive expr expr.Range traverseSynExpr
578578

src/Compiler/SyntaxTree/SyntaxTree.fs

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -870,26 +870,10 @@ type SynExpr =
870870
| _ -> false
871871

872872
[<NoEquality; NoComparison>]
873-
type SynTypeSpread = SynTypeSpread of spreadRange: range * ty: SynType * without: SynTypeWithout option * range: range
873+
type SynTypeSpread = SynTypeSpread of spreadRange: range * ty: SynType * range: range
874874

875875
[<NoEquality; NoComparison>]
876-
type SynTypeWithout = SynTypeWithout of withoutKeywordRange: range * without: SynTypeSpreadOrLongIdent list
877-
878-
[<NoEquality; NoComparison; RequireQualifiedAccess>]
879-
type SynTypeSpreadOrLongIdent =
880-
| SynTypeSpread of spread: SynTypeSpread * separator: range option
881-
| SynTypeLongIdent of longIdent: SynLongIdent * separator: range option
882-
883-
[<NoEquality; NoComparison>]
884-
type SynExprSpread = SynExprSpread of spreadRange: range * expr: SynExpr * without: SynExprWithout option * range: range
885-
886-
[<NoEquality; NoComparison>]
887-
type SynExprWithout = SynExprWithout of withoutKeywordRange: range * without: SynExprSpreadOrIdent list
888-
889-
[<NoEquality; NoComparison; RequireQualifiedAccess>]
890-
type SynExprSpreadOrIdent =
891-
| SynExprSpread of spread: SynExprSpread * separator: range option
892-
| SynExprIdent of ident: Ident * separator: range option
876+
type SynExprSpread = SynExprSpread of spreadRange: range * expr: SynExpr * range: range
893877

894878
[<NoEquality; NoComparison>]
895879
type SynExprRecordField =
@@ -916,7 +900,7 @@ type SynExprAnonRecordFieldOrSpread =
916900
member this.Range =
917901
match this with
918902
| SynExprAnonRecordFieldOrSpread.Field(SynExprAnonRecordField(_, _, _, m), _)
919-
| SynExprAnonRecordFieldOrSpread.Spread(SynExprSpread(_, _, _, m), _) -> m
903+
| SynExprAnonRecordFieldOrSpread.Spread(SynExprSpread(_, _, m), _) -> m
920904

921905
[<NoEquality; NoComparison; RequireQualifiedAccess>]
922906
type SynInterpolatedStringPart =

src/Compiler/SyntaxTree/SyntaxTree.fsi

Lines changed: 2 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -980,51 +980,13 @@ type SynExpr =
980980
///
981981
/// type Ty2 = { ...Ty1 }
982982
[<NoEquality; NoComparison>]
983-
type SynTypeSpread = SynTypeSpread of spreadRange: range * ty: SynType * without: SynTypeWithout option * range: range
984-
985-
/// Represents the optional without component of a type spread.
986-
///
987-
/// ...Ty without A; B; C
988-
///
989-
/// ...Ty1 without ...Ty2
990-
[<NoEquality; NoComparison>]
991-
type SynTypeWithout = SynTypeWithout of withoutKeywordRange: range * without: SynTypeSpreadOrLongIdent list
992-
993-
/// Represents either a type spread or a member identifier.
994-
[<NoEquality; NoComparison; RequireQualifiedAccess>]
995-
type SynTypeSpreadOrLongIdent =
996-
/// Represents a type spread in the without component of an outer type spread.
997-
| SynTypeSpread of spread: SynTypeSpread * separator: range option
998-
999-
/// Represents a member identifier in the without component of a type spread.
1000-
| SynTypeLongIdent of longIdent: SynLongIdent * separator: range option
983+
type SynTypeSpread = SynTypeSpread of spreadRange: range * ty: SynType * range: range
1001984

1002985
/// Represents a spread expression.
1003986
///
1004987
/// ...expr
1005-
///
1006-
/// ...expr without A; B; C
1007-
///
1008-
/// ...expr1 without ...expr2
1009-
[<NoEquality; NoComparison>]
1010-
type SynExprSpread = SynExprSpread of spreadRange: range * expr: SynExpr * without: SynExprWithout option * range: range
1011-
1012-
/// Represents the optional without component of a spread expression.
1013-
///
1014-
/// ...expr without A; B; C
1015-
///
1016-
/// ...expr1 without ...expr2
1017988
[<NoEquality; NoComparison>]
1018-
type SynExprWithout = SynExprWithout of withoutKeywordRange: range * without: SynExprSpreadOrIdent list
1019-
1020-
/// Represents either a spread expression or a member identifier.
1021-
[<NoEquality; NoComparison; RequireQualifiedAccess>]
1022-
type SynExprSpreadOrIdent =
1023-
/// Represents a spread expression in the without component of an outer spread expression.
1024-
| SynExprSpread of spread: SynExprSpread * separator: range option
1025-
1026-
/// Represents a member identifier in the without component of a spread expression.
1027-
| SynExprIdent of ident: Ident * separator: range option
989+
type SynExprSpread = SynExprSpread of spreadRange: range * expr: SynExpr * range: range
1028990

1029991
[<NoEquality; NoComparison>]
1030992
type SynExprRecordField =

src/Compiler/pars.fsy

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2973,12 +2973,12 @@ recdFieldDecl:
29732973

29742974
| DOT_DOT_DOT typ
29752975
{ let m = rhs2 parseState 1 2
2976-
SynFieldOrSpread.Spread (SynTypeSpread (rhs parseState 1, $2, None, m)) }
2976+
SynFieldOrSpread.Spread (SynTypeSpread (rhs parseState 1, $2, m)) }
29772977

29782978
| DOT_DOT_DOT
29792979
{ let m = rhs parseState 1
29802980
reportParseErrorAt m (FSComp.SR.parsMissingSpreadSrcTy ())
2981-
SynFieldOrSpread.Spread (SynTypeSpread (m, SynType.FromParseError m, None, m)) }
2981+
SynFieldOrSpread.Spread (SynTypeSpread (m, SynType.FromParseError m, m)) }
29822982

29832983
/* Part of a field or val declaration in a record type or object type */
29842984
fieldDecl:
@@ -5725,18 +5725,16 @@ recdExprCore:
57255725

57265726
| DOT_DOT_DOT declExprBlock recdExprBindings opt_seps_block
57275727
{ let mSpread = rhs parseState 1
5728-
let without = None // TODO.
57295728
let m = rhs2 parseState 1 2
57305729
let l = List.rev $3
5731-
let l = rebindRanges (RecordBinding.Spread (SynExprSpread (mSpread, $2, without, m))) l $4
5730+
let l = rebindRanges (RecordBinding.Spread (SynExprSpread (mSpread, $2, m))) l $4
57325731
None, l }
57335732

57345733
| DOT_DOT_DOT
57355734
{ let mSpread = rhs parseState 1
5736-
let without = None // TODO.
57375735
let m = mSpread
57385736
reportParseErrorAt m (FSComp.SR.parsMissingSpreadSrcExpr ())
5739-
None, rebindRanges (RecordBinding.Spread (SynExprSpread (mSpread, arbExpr ("spreadSrcExpr", m), without, m))) [] None }
5737+
None, rebindRanges (RecordBinding.Spread (SynExprSpread (mSpread, arbExpr ("spreadSrcExpr", m), m))) [] None }
57405738

57415739
/*
57425740
handles cases when identifier can start from the underscore
@@ -5822,9 +5820,8 @@ recdExprBindings:
58225820
recdBinding:
58235821
| DOT_DOT_DOT declExprBlock
58245822
{ let mSpread = rhs parseState 1
5825-
let without = None // TODO.
58265823
let m = rhs2 parseState 1 2
5827-
RecordBinding.Spread (SynExprSpread (mSpread, $2, without, m)) }
5824+
RecordBinding.Spread (SynExprSpread (mSpread, $2, m)) }
58285825

58295826
| pathOrUnderscore EQUALS declExprBlock
58305827
{ let mEquals = rhs parseState 2
@@ -5851,9 +5848,8 @@ recdBinding:
58515848
| DOT_DOT_DOT
58525849
{ reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMissingSpreadSrcExpr ())
58535850
let mSpread = rhs parseState 1
5854-
let without = None // TODO.
58555851
let m = mSpread
5856-
RecordBinding.Spread (SynExprSpread (mSpread, arbExpr ("spreadSrcExpr", m), without, m)) }
5852+
RecordBinding.Spread (SynExprSpread (mSpread, arbExpr ("spreadSrcExpr", m), m)) }
58575853

58585854
/* There is a minor conflict between
58595855
seq { new ty() } // sequence expression with one very odd 'action' expression

0 commit comments

Comments
 (0)