@@ -359,6 +359,50 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput,
359359 None
360360 })
361361 result.IsSome
362+
363+ member _.IsTypeAnnotationGivenAtPosition pos =
364+ let result =
365+ SyntaxTraversal.Traverse( pos, input, { new SyntaxVisitorBase<_>() with
366+ member _. VisitExpr(_ path, _ traverseSynExpr, defaultTraverse, expr) =
367+ match expr with
368+ | SynExpr.Typed (_ expr, _ typeExpr, range) when Position.posEq range.Start pos ->
369+ Some range
370+ | _ -> defaultTraverse expr
371+
372+ override _.VisitSimplePats ( _path , pats ) =
373+ match pats with
374+ | [] -> None
375+ | _ ->
376+ let exprFunc pat =
377+ match pat with
378+ | SynSimplePat.Typed (_ pat, _ targetExpr, range) when Position.posEq range.Start pos ->
379+ Some range
380+ | _ ->
381+ None
382+
383+ pats |> List.tryPick exprFunc
384+
385+ override _.VisitPat ( _path , defaultTraverse , pat ) =
386+ match pat with
387+ | SynPat.Typed (_ pat, _ targetType, range) when Position.posEq range.Start pos ->
388+ Some range
389+ | _ -> defaultTraverse pat })
390+ result.IsSome
391+
392+ member _.IsBindingALambdaAtPosition pos =
393+ let result =
394+ SyntaxTraversal.Traverse( pos, input, { new SyntaxVisitorBase<_>() with
395+ member _. VisitExpr(_ path, _ traverseSynExpr, defaultTraverse, expr) =
396+ defaultTraverse expr
397+
398+ override _.VisitBinding ( _path , defaultTraverse , binding ) =
399+ match binding with
400+ | SynBinding.SynBinding(_, _, _, _, _, _, _, _, _, expr, range, _) when Position.posEq range.Start pos ->
401+ match expr with
402+ | SynExpr.Lambda _ -> Some range
403+ | _ -> None
404+ | _ -> defaultTraverse binding })
405+ result.IsSome
362406
363407 /// Get declared items and the selected item at the specified location
364408 member _.GetNavigationItemsImpl () =
0 commit comments