/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Portable/Parser/BlockContexts/BlockContextExtensions.vb
95 строк
3 KB
Jonathon Marolf
update headers
23 янв 2020, 04:01
Не верифицирован
23 янв 2020, 04:01
91571a3
Код
Авторство
О чём код?
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports System.Runtime.CompilerServices Namespace Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax Friend Module BlockContextExtensions <Extension()> Friend Function EndLambda(context As BlockContext) As BlockContext Dim complete = False Do complete = context.IsLambda context = context.EndBlock(Nothing) Loop Until complete Return context End Function <Extension()> Friend Sub RecoverFromMissingEnd(context As BlockContext, lastContext As BlockContext) Debug.Assert(lastContext IsNot Nothing) While context.Level > lastContext.Level context = context.EndBlock(Nothing) End While End Sub <Extension()> Friend Function IsWithin(context As BlockContext, ParamArray kinds() As SyntaxKind) As Boolean Return context.FindNearest(kinds) IsNot Nothing End Function <Extension()> Friend Function FindNearest(context As BlockContext, conditionIsTrue As Func(Of BlockContext, Boolean)) As BlockContext While context IsNot Nothing If conditionIsTrue(context) Then Return context End If context = context.PrevBlock End While Return Nothing End Function <Extension()> Friend Function FindNearest(context As BlockContext, conditionIsTrue As Func(Of SyntaxKind, Boolean)) As BlockContext While context IsNot Nothing If conditionIsTrue(context.BlockKind) Then Return context End If context = context.PrevBlock End While Return Nothing End Function <Extension()> Friend Function FindNearest(context As BlockContext, ParamArray kinds() As SyntaxKind) As BlockContext While context IsNot Nothing If kinds.Contains(context.BlockKind) Then Return context End If context = context.PrevBlock End While Return Nothing End Function <Extension()> Friend Function FindNearestInSameMethodScope(context As BlockContext, ParamArray kinds() As SyntaxKind) As BlockContext While context IsNot Nothing If kinds.Contains(context.BlockKind) Then Return context End If If context.IsLambda Then Return Nothing End If context = context.PrevBlock End While Return Nothing End Function <Extension()> Friend Function FindNearestLambdaOrSingleLineIf(context As BlockContext, lastContext As BlockContext) As BlockContext While context IsNot lastContext If context.IsLambda OrElse context.IsLineIf Then Return context End If context = context.PrevBlock End While Return Nothing End Function End Module End Namespace