in src/Bicep.Core/TypeSystem/DeclaredTypeManager.cs [87:194]
private DeclaredTypeAssignment? GetTypeAssignmentWithoutCycleCheck(SyntaxBase syntax)
{
RuntimeHelpers.EnsureSufficientExecutionStack();
if (syntax is TypeSyntax)
{
return TryGetTypeAssignmentFromTypeSyntax(syntax);
}
switch (syntax)
{
case ExtensionDeclarationSyntax extension:
return GetExtensionType(extension);
case ExtensionConfigAssignmentSyntax extConfigAssignment:
return GetExtensionConfigAssignmentType(extConfigAssignment);
case MetadataDeclarationSyntax metadata:
return new DeclaredTypeAssignment(this.typeManager.GetTypeInfo(metadata.Value), metadata);
case ParameterDeclarationSyntax parameter:
return GetParameterType(parameter);
case ParameterAssignmentSyntax parameterAssignment:
return GetParameterAssignmentType(parameterAssignment);
case TypeDeclarationSyntax typeDeclaration:
return GetTypeType(typeDeclaration);
case ResourceDeclarationSyntax resource:
return GetResourceType(resource);
case ModuleDeclarationSyntax module:
return GetModuleType(module);
case TestDeclarationSyntax test:
return GetTestType(test);
case VariableAccessSyntax variableAccess:
return GetVariableAccessType(variableAccess);
case OutputDeclarationSyntax output:
return GetOutputType(output);
case AssertDeclarationSyntax assert:
return new DeclaredTypeAssignment(TypeFactory.CreateBooleanType(), assert);
case TargetScopeSyntax targetScope:
var supportedScopes = TargetScopeSyntax.GetDeclaredType(features);
return new DeclaredTypeAssignment(
supportedScopes,
targetScope, DeclaredTypeFlags.Constant);
case IfConditionSyntax ifCondition:
return GetIfConditionType(ifCondition);
case ForSyntax @for:
return GetForSyntaxType(@for);
case AccessExpressionSyntax accessExpression:
return GetAccessExpressionType(accessExpression);
case ResourceAccessSyntax resourceAccess:
return GetResourceAccessType(resourceAccess);
case LocalVariableSyntax localVariable:
return new DeclaredTypeAssignment(this.typeManager.GetTypeInfo(localVariable), localVariable);
case FunctionCallSyntax functionCall:
return GetFunctionType(functionCall);
case InstanceFunctionCallSyntax instanceFunctionCall:
return GetFunctionType(instanceFunctionCall);
case ArraySyntax array:
return GetArrayType(array);
case ArrayItemSyntax arrayItem:
return GetArrayItemType(arrayItem);
case ObjectSyntax @object:
return GetObjectType(@object);
case ObjectPropertySyntax objectProperty:
return GetObjectPropertyType(objectProperty);
case StringSyntax @string:
return GetStringType(@string);
case FunctionArgumentSyntax functionArgument:
return GetFunctionArgumentType(functionArgument);
case NonNullAssertionSyntax nonNullAssertion:
return GetNonNullType(nonNullAssertion);
case TypedLocalVariableSyntax typedLocalVariable:
return GetTypedLocalVariableType(typedLocalVariable);
case TypedLambdaSyntax typedLambda:
return GetTypedLambdaType(typedLambda);
case VariableDeclarationSyntax variableDeclaration:
return GetVariableTypeIfDefined(variableDeclaration);
}
return null;
}