@@ -57,7 +57,7 @@ module Ast =
5757 match exprToFlatten with
5858 | SynExpr.App(_, _, x, y, _) ->
5959 match x with
60- | SynExpr.App(_, true , SynExpr.Ident ( op ), rhs, _) as app ->
60+ | SynExpr.App(_, true , SynExpr.LongIdent (_, SynLongIdent ([ op ], _, _), _, _ ), rhs, _) as app ->
6161 let lhs = y
6262
6363 match op.idText with
@@ -85,33 +85,33 @@ module Ast =
8585 let rec removeAutoGeneratedMatchesFromLambda = function
8686 | SynExpr.Match( DebugPointAtBinding.NoneAtInvisible,
8787 _,
88- [ SynMatchClause( SynPat.Wild(_), _, expr, _, _)] , _) ->
88+ [ SynMatchClause( SynPat.Wild(_), _, expr, _, _, _)], _ , _) ->
8989 removeAutoGeneratedMatchesFromLambda expr
9090 | x -> x
9191
9292 let (| IsCurriedLambda | _ |) = function
93- | SynExpr.Lambda(_, _, parameter, ( SynExpr.Lambda(_) as inner), _, _) as outer
93+ | SynExpr.Lambda(_, _, parameter, ( SynExpr.Lambda(_) as inner), _, _, _ ) as outer
9494 when outer.Range = inner.Range ->
9595 Some( parameter, inner)
9696 | _ -> None
9797
9898 let rec getLambdaParametersAndExpression parameters = function
9999 | IsCurriedLambda( parameter, curriedLambda) ->
100100 getLambdaParametersAndExpression ( parameter:: parameters) curriedLambda
101- | SynExpr.Lambda(_, _, parameter, body, _, _) ->
101+ | SynExpr.Lambda(_, _, parameter, body, _, _, _ ) ->
102102 { Arguments = parameter:: parameters |> List.rev
103103 Body = removeAutoGeneratedMatchesFromLambda body } |> Some
104104 | _ -> None
105105
106106 match lambda with
107- | AstNode.Expression( SynExpr.Lambda(_, _, _, _, _, range) as lambda) ->
107+ | AstNode.Expression( SynExpr.Lambda(_, _, _, _, _, range, _ ) as lambda) ->
108108 getLambdaParametersAndExpression [] lambda
109109 |> Option.map ( fun x -> ( x, range))
110110 | _ -> None
111111
112112 let (| Cons | _ |) pattern =
113113 match pattern with
114- | SynPat.LongIdent( LongIdentWithDots ([ identifier], _),
114+ | SynPat.LongIdent( SynLongIdent ([ identifier], _ , _),
115115 _, _,
116116 SynArgPats.Pats([ SynPat.Tuple(_, [ lhs; rhs], _)]), _, _)
117117 when identifier.idText = " op_ColonColon" ->
@@ -130,13 +130,13 @@ module Ast =
130130
131131 let inline private moduleDeclarationChildren node add =
132132 match node with
133- | SynModuleDecl.NestedModule( componentInfo, _, moduleDeclarations, _, _) ->
133+ | SynModuleDecl.NestedModule( componentInfo, _, moduleDeclarations, _, _, _ ) ->
134134 moduleDeclarations |> List.revIter ( ModuleDeclaration >> add)
135135 add <| ComponentInfo componentInfo
136136 | SynModuleDecl.Let(_, bindings, _) -> bindings |> List.revIter ( Binding >> add)
137- | SynModuleDecl.DoExpr (_, expression, _) -> add <| Expression expression
137+ | SynModuleDecl.Expr ( expression, _) -> add <| Expression expression
138138 | SynModuleDecl.Types( typeDefinitions, _) -> typeDefinitions |> List.revIter ( TypeDefinition >> add)
139- | SynModuleDecl.Exception( SynExceptionDefn.SynExceptionDefn( repr, members, _), _) ->
139+ | SynModuleDecl.Exception( SynExceptionDefn.SynExceptionDefn( repr, _, members, _), _) ->
140140 members |> List.revIter ( MemberDefinition >> add)
141141 add <| ExceptionRepresentation repr
142142 | SynModuleDecl.NamespaceFragment( moduleOrNamespace) -> add <| ModuleOrNamespace moduleOrNamespace
@@ -153,7 +153,7 @@ module Ast =
153153 add <| Type synType
154154 | SynType.Tuple(_, types, _) ->
155155 types |> List.revIter ( snd >> Type >> add)
156- | SynType.Fun( synType, synType1, _)
156+ | SynType.Fun( synType, synType1, _, _ )
157157 | SynType.StaticConstantNamed( synType, synType1, _)
158158 | SynType.MeasureDivide( synType, synType1, _) ->
159159 add <| Type synType1
@@ -191,20 +191,23 @@ module Ast =
191191 add <| Expression expression
192192 add <| Type synType
193193 | SynMemberDefn.LetBindings( bindings, _, _, _) -> bindings |> List.revIter ( Binding >> add)
194- | SynMemberDefn.Interface( synType, Some( members), _) ->
194+ | SynMemberDefn.Interface( synType, _, Some( members), _) ->
195195 members |> List.revIter ( MemberDefinition >> add)
196196 add <| Type synType
197- | SynMemberDefn.Interface( synType, None, _)
197+ | SynMemberDefn.Interface( synType, _, None, _)
198198 | SynMemberDefn.Inherit( synType, _, _) -> add <| Type synType
199199 | SynMemberDefn.Open(_)
200200 | SynMemberDefn.AbstractSlot(_) -> ()
201201 | SynMemberDefn.ValField( field, _) -> add <| Field field
202202 | SynMemberDefn.NestedType( typeDefinition, _, _) -> add <| TypeDefinition typeDefinition
203- | SynMemberDefn.AutoProperty(_, _, _, Some( synType), _, _, _, _, expression, _, _) ->
203+ | SynMemberDefn.AutoProperty(_, _, _, Some( synType), _, _, _, _, _, expression, _ , _, _) ->
204204 add <| Expression expression
205205 add <| Type synType
206- | SynMemberDefn.AutoProperty(_, _, _, None, _, _, _, _, expression, _, _) ->
206+ | SynMemberDefn.AutoProperty(_, _, _, None, _, _, _, _, _, expression, _ , _, _) ->
207207 add <| Expression expression
208+ | SynMemberDefn.GetSetMember( memberDefnForGet, memberDefnForSet, _, _) ->
209+ memberDefnForGet |> Option.iter ( Binding >> add)
210+ memberDefnForSet |> Option.iter ( Binding >> add)
208211
209212 let inline private patternChildren node add =
210213 match node with
@@ -213,16 +216,16 @@ module Ast =
213216 | SynPat.Typed( pattern, synType, _) ->
214217 add <| Type synType
215218 add <| Pattern pattern
216- | SynPat.Or( pattern, pattern1, _) ->
219+ | SynPat.Or( pattern, pattern1, _, _ ) ->
217220 add <| Pattern pattern1
218221 add <| Pattern pattern
219222 | SynPat.ArrayOrList(_, patterns, _)
220223 | SynPat.Tuple(_, patterns, _)
221224 | SynPat.Ands( patterns, _) -> patterns |> List.revIter ( Pattern >> add)
222225 | SynPat.Attrib( pattern, _, _)
223- | SynPat.Named( pattern, _, _, _, _)
224226 | SynPat.Paren( pattern, _) -> add <| Pattern pattern
225- | SynPat.Record( patternsAndIdentifier, _) -> patternsAndIdentifier |> List.revIter ( snd >> Pattern >> add)
227+ | SynPat.Named(_) -> ()
228+ | SynPat.Record( patternsAndIdentifier, _) -> patternsAndIdentifier |> List.revIter ( fun ( _ , _ , pattern ) -> pattern |> Pattern |> add)
226229 | SynPat.Const(_)
227230 | SynPat.Wild(_)
228231 | SynPat.FromParseError(_)
@@ -235,6 +238,9 @@ module Ast =
235238 add <| Pattern lhs
236239 | SynPat.LongIdent(_, _, _, constructorArguments, _, _) ->
237240 add <| ConstructorArguments constructorArguments
241+ | SynPat.As( lhsPart, rhsPart, _) ->
242+ add <| Pattern lhsPart
243+ add <| Pattern rhsPart
238244
239245 let inline private expressionChildren node add =
240246 match node with
@@ -244,8 +250,8 @@ module Ast =
244250 | SynExpr.LongIdentSet(_, expression, _)
245251 | SynExpr.Do( expression, _)
246252 | SynExpr.Assert( expression, _)
247- | SynExpr.CompExpr (_, _, expression, _)
248- | SynExpr.ArrayOrListOfSeqExpr (_, expression, _)
253+ | SynExpr.ComputationExpr ( _, expression, _)
254+ | SynExpr.ArrayOrListComputed (_, expression, _)
249255 | SynExpr.AddressOf(_, expression, _, _)
250256 | SynExpr.InferredDowncast( expression, _)
251257 | SynExpr.InferredUpcast( expression, _)
@@ -264,7 +270,7 @@ module Ast =
264270 | SynExpr.DotIndexedSet( expression, _, expression1, _, _, _)
265271 | SynExpr.JoinIn( expression, _, expression1, _)
266272 | SynExpr.While(_, expression, expression1, _)
267- | SynExpr.TryFinally( expression, expression1, _, _, _)
273+ | SynExpr.TryFinally( expression, expression1, _, _, _, _ )
268274 | SynExpr.Set( expression, expression1, _)
269275 | SynExpr.DotSet( expression, _, expression1, _) ->
270276 add <| Expression expression1
@@ -279,7 +285,7 @@ module Ast =
279285 | SynExpr.AnonRecd(_, Some ( expr,_), _, _) ->
280286 add <| Expression expr
281287 | SynExpr.AnonRecd(_, None, _, _) -> ()
282- | SynExpr.ObjExpr( synType, _, bindings, _, _, _) ->
288+ | SynExpr.ObjExpr( synType, _, _, bindings, _ , _, _, _) ->
283289 bindings |> List.revIter ( Binding >> add)
284290 add <| Type synType
285291 | SynExpr.ImplicitZero(_)
@@ -293,28 +299,28 @@ module Ast =
293299 | SynExpr.LibraryOnlyUnionCaseFieldSet(_)
294300 | SynExpr.ArbitraryAfterError(_) -> ()
295301 | SynExpr.DotNamedIndexedPropertySet( expression, _, expression1, expression2, _)
296- | SynExpr.For(_, _, expression, _, expression1, expression2, _) ->
302+ | SynExpr.For(_, _, _, _, expression, _, expression1, expression2, _) ->
297303 add <| Expression expression2
298304 add <| Expression expression1
299305 add <| Expression expression
300- | SynExpr.LetOrUseBang(_, _, _, pattern, rightHandSide, andBangs, leftHandSide, _) ->
306+ | SynExpr.LetOrUseBang(_, _, _, pattern, rightHandSide, andBangs, leftHandSide, _, _ ) ->
301307 add <| Expression rightHandSide
302308 add <| Expression leftHandSide
303309 // TODO: is the the correct way to handle the new `and!` syntax?
304- andBangs |> List.iter ( fun ( _ , _ , _ , pattern , body , _ ) ->
310+ andBangs |> List.iter ( fun ( SynExprAndBang ( _ , _ , _ , pattern , body , _ , _ ) ) ->
305311 add <| Expression body
306312 add <| Pattern pattern
307313 )
308314 add <| Pattern pattern
309- | SynExpr.ForEach(_, _, _, pattern, expression, expression1, _) ->
315+ | SynExpr.ForEach(_, _, _, _, pattern, expression, expression1, _) ->
310316 add <| Expression expression1
311317 add <| Expression expression
312318 add <| Pattern pattern
313319 | SynExpr.MatchLambda(_, _, matchClauses, _, _) ->
314320 matchClauses |> List.revIter ( Match >> add)
315- | SynExpr.TryWith( expression, _, matchClauses, _, _, _, _)
316- | SynExpr.MatchBang(_, expression, matchClauses, _)
317- | SynExpr.Match(_, expression, matchClauses, _) ->
321+ | SynExpr.TryWith( expression, matchClauses, _, _, _, _)
322+ | SynExpr.MatchBang(_, expression, matchClauses, _, _ )
323+ | SynExpr.Match(_, expression, matchClauses, _, _ ) ->
318324 matchClauses |> List.revIter ( Match >> add)
319325 add <| Expression expression
320326 | SynExpr.TypeApp( expression, _, types, _, _, _, _) ->
@@ -326,11 +332,11 @@ module Ast =
326332 | SynExpr.Downcast( expression, synType, _) ->
327333 add <| Type synType
328334 add <| Expression expression
329- | SynExpr.LetOrUse(_, _, bindings, expression, _) ->
335+ | SynExpr.LetOrUse(_, _, bindings, expression, _, _ ) ->
330336 add <| Expression expression
331337 bindings |> List.revIter ( Binding >> add)
332338 | SynExpr.Ident( ident) -> add <| Identifier([ ident.idText], ident.idRange)
333- | SynExpr.LongIdent(_, LongIdentWithDots ( ident, _), _, range) ->
339+ | SynExpr.LongIdent(_, SynLongIdent ( ident, _ , _), _, range) ->
334340 add <| Identifier( ident |> List.map ( fun x -> x.idText), range)
335341 | SynExpr.IfThenElse( cond, body, Some( elseExpr), _, _, _, _) ->
336342 add <| Else elseExpr
@@ -351,6 +357,16 @@ module Ast =
351357 | SynExpr.Lambda(_)
352358 | SynExpr.App(_)
353359 | SynExpr.Fixed(_) -> ()
360+ | SynExpr.DebugPoint(_ debugPoint, _, innerExpr) ->
361+ add <| Expression innerExpr
362+ | SynExpr.Dynamic( funcExpr, _, argExpr, _) ->
363+ add <| Expression funcExpr
364+ add <| Expression argExpr
365+ | SynExpr.IndexFromEnd( expr, _) ->
366+ add <| Expression expr
367+ | SynExpr.IndexRange( expr1, _, expr2, _, _, _) ->
368+ expr1 |> Option.iter ( Expression >> add)
369+ expr2 |> Option.iter ( Expression >> add)
354370
355371 let inline private typeSimpleRepresentationChildren node add =
356372 match node with
@@ -381,11 +397,11 @@ module Ast =
381397
382398 let inline private matchChildren node add =
383399 match node with
384- | SynMatchClause( pattern, Some( expression), expression1, _, _) ->
400+ | SynMatchClause( pattern, Some( expression), expression1, _, _, _ ) ->
385401 add <| Expression expression1
386402 add <| Expression expression
387403 add <| Pattern pattern
388- | SynMatchClause( pattern, None, expression1, _, _) ->
404+ | SynMatchClause( pattern, None, expression1, _, _, _ ) ->
389405 add <| Expression expression1
390406 add <| Pattern pattern
391407
@@ -394,7 +410,7 @@ module Ast =
394410 | SynArgPats.Pats( patterns) ->
395411 patterns |> List.revIter ( Pattern >> add)
396412 | SynArgPats.NamePatPairs( namePatterns, _) ->
397- namePatterns |> List.revIter ( snd > > Pattern > > add)
413+ namePatterns |> List.revIter ( fun ( _ , _ , pattern ) -> pattern | > Pattern | > add)
398414
399415 let inline private typeRepresentationChildren node add =
400416 match node with
@@ -416,14 +432,14 @@ module Ast =
416432 let traverseNode node add =
417433 match node with
418434 | ModuleDeclaration( x) -> moduleDeclarationChildren x add
419- | ModuleOrNamespace( SynModuleOrNamespace(_, _, _, moduleDeclarations, _, _, _, _)) ->
435+ | ModuleOrNamespace( SynModuleOrNamespace(_, _, _, moduleDeclarations, _, _, _, _, _ )) ->
420436 moduleDeclarations |> List.revIter ( ModuleDeclaration >> add)
421- | Binding( SynBinding(_, _, _, _, _, _, _, pattern, _, expression, _, _)) ->
437+ | Binding( SynBinding(_, _, _, _, _, _, _, pattern, _, expression, _, _, _ )) ->
422438 add <| Expression expression
423439 add <| Pattern pattern
424440 | ExceptionRepresentation( SynExceptionDefnRepr.SynExceptionDefnRepr(_, unionCase, _, _, _, _)) ->
425441 add <| UnionCase unionCase
426- | TypeDefinition( SynTypeDefn( componentInfo, typeRepresentation, members, implicitCtor, _)) ->
442+ | TypeDefinition( SynTypeDefn( componentInfo, typeRepresentation, members, implicitCtor, _, _ )) ->
427443 implicitCtor |> Option.iter ( MemberDefinition >> add)
428444 members |> List.revIter ( MemberDefinition >> add)
429445 add <| TypeRepresentation typeRepresentation
@@ -438,7 +454,7 @@ module Ast =
438454 | SimplePattern( x) -> simplePatternChildren x add
439455 | LambdaArg( x)
440456 | SimplePatterns( x) -> simplePatternsChildren x add
441- | InterfaceImplementation( SynInterfaceImpl( synType, bindings, _)) ->
457+ | InterfaceImplementation( SynInterfaceImpl( synType, _, bindings, _ , _)) ->
442458 bindings |> List.revIter ( Binding >> add)
443459 add <| Type synType
444460 | TypeRepresentation( x) -> typeRepresentationChildren x add
@@ -451,7 +467,7 @@ module Ast =
451467 | Else( x)
452468 | Expression( x) -> expressionChildren x add
453469
454- | File( ParsedInput.ImplFile( ParsedImplFileInput(_, _, _, _, _, moduleOrNamespaces, _))) ->
470+ | File( ParsedInput.ImplFile( ParsedImplFileInput(_, _, _, _, _, moduleOrNamespaces, _, _ ))) ->
455471 moduleOrNamespaces |> List.revIter ( ModuleOrNamespace >> add)
456472
457473 | UnionCase( x) -> unionCaseChildren x add
0 commit comments