ShaderTools.Hlsl.Compilation.SemanticModel.GetDeclaredSymbol C# (CSharp) Method

GetDeclaredSymbol() public method

public GetDeclaredSymbol ( ClassTypeSyntax syntax ) : ClassSymbol
syntax ClassTypeSyntax
return ShaderTools.Hlsl.Symbols.ClassSymbol
        public ClassSymbol GetDeclaredSymbol(ClassTypeSyntax syntax)
        {
            var result = _bindingResult.GetBoundNode(syntax) as BoundClassType;
            return result?.ClassSymbol;
        }

Same methods

SemanticModel::GetDeclaredSymbol ( ConstantBufferSyntax syntax ) : ConstantBufferSymbol
SemanticModel::GetDeclaredSymbol ( FunctionDeclarationSyntax syntax ) : FunctionSymbol
SemanticModel::GetDeclaredSymbol ( FunctionDefinitionSyntax syntax ) : FunctionSymbol
SemanticModel::GetDeclaredSymbol ( InterfaceTypeSyntax syntax ) : InterfaceSymbol
SemanticModel::GetDeclaredSymbol ( NamespaceSyntax syntax ) : NamespaceSymbol
SemanticModel::GetDeclaredSymbol ( ParameterSyntax syntax ) : ParameterSymbol
SemanticModel::GetDeclaredSymbol ( StructTypeSyntax syntax ) : StructSymbol
SemanticModel::GetDeclaredSymbol ( TechniqueSyntax syntax ) : TechniqueSymbol
SemanticModel::GetDeclaredSymbol ( TypeAliasSyntax syntax ) : TypeAliasSymbol
SemanticModel::GetDeclaredSymbol ( VariableDeclaratorSyntax syntax ) : VariableSymbol

Usage Example

Exemplo n.º 1
0
 private static IEnumerable<SymbolSpan> GetSymbolSpans(SemanticModel semanticModel, SyntaxNode node)
 {
     switch (node.Kind)
     {
         case SyntaxKind.VariableDeclarator:
         {
             var expression = (VariableDeclaratorSyntax) node;
             var symbol = semanticModel.GetDeclaredSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateDefinition(symbol, expression.Identifier.SourceRange, expression.Identifier.Span);
             break;
         }
         case SyntaxKind.ClassType:
         {
             var expression = (ClassTypeSyntax) node;
             var symbol = semanticModel.GetDeclaredSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateDefinition(symbol, expression.Name.SourceRange, expression.Name.Span);
             break;
         }
         case SyntaxKind.StructType:
         {
             var expression = (StructTypeSyntax) node;
             var symbol = semanticModel.GetDeclaredSymbol(expression);
             if (symbol != null && expression.Name != null)
                 yield return SymbolSpan.CreateDefinition(symbol, expression.Name.SourceRange, expression.Name.Span);
             break;
         }
         case SyntaxKind.InterfaceType:
         {
             var expression = (InterfaceTypeSyntax) node;
             var symbol = semanticModel.GetDeclaredSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateDefinition(symbol, expression.Name.SourceRange, expression.Name.Span);
             break;
         }
         case SyntaxKind.IdentifierName:
         {
             var expression = (IdentifierNameSyntax) node;
             var symbol = semanticModel.GetSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateReference(symbol, expression.Name.SourceRange, expression.Name.Span);
             break;
         }
         case SyntaxKind.IdentifierDeclarationName:
         {
             var expression = (IdentifierDeclarationNameSyntax) node;
             var symbol = semanticModel.GetSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateDefinition(symbol, expression.Name.SourceRange, expression.Name.Span);
             break;
         }
         case SyntaxKind.FieldAccessExpression:
         {
             var expression = (FieldAccessExpressionSyntax) node;
             var symbol = semanticModel.GetSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateReference(symbol, expression.Name.SourceRange, expression.Name.Span);
             break;
         }
         case SyntaxKind.MethodInvocationExpression:
         {
             var expression = (MethodInvocationExpressionSyntax) node;
             var symbol = semanticModel.GetSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateReference(symbol, expression.Name.SourceRange, expression.Name.Span);
             break;
         }
         case SyntaxKind.FunctionInvocationExpression:
         {
             var expression = (FunctionInvocationExpressionSyntax) node;
             var symbol = semanticModel.GetSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateReference(symbol, 
                     expression.Name.GetUnqualifiedName().Name.SourceRange, 
                     expression.Name.GetUnqualifiedName().Name.Span);
             break;
         }
         case SyntaxKind.FunctionDefinition:
         {
             var expression = (FunctionDefinitionSyntax) node;
             var symbol = semanticModel.GetDeclaredSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateDefinition(symbol,
                     expression.Name.GetUnqualifiedName().Name.SourceRange,
                     expression.Name.GetUnqualifiedName().Name.Span);
             break;
         }
         case SyntaxKind.FunctionDeclaration:
         {
             var expression = (FunctionDeclarationSyntax) node;
             var symbol = semanticModel.GetDeclaredSymbol(expression);
             if (symbol != null)
                 yield return SymbolSpan.CreateDefinition(symbol,
                     expression.Name.GetUnqualifiedName().Name.SourceRange,
                     expression.Name.GetUnqualifiedName().Name.Span);
             break;
         }
     }
 }