/// <summary>
        /// Compiles a <see cref="UvssNavigationExpression"/> from the specified syntax node.
        /// </summary>
        private static UvssNavigationExpression CompileNavigationExpression(UvssNavigationExpressionSyntax node)
        {
            var navigationProperty =
                GetPropertyName(node.PropertyName);

            var navigationPropertyType =
                node.TypeNameIdentifier.Text;

            var navigationPropertyIndex = (default(Int32?));

            if (node.Indexer != null)
            {
                navigationPropertyIndex = node.Indexer.GetValue();
            }

            return(new UvssNavigationExpression(navigationProperty, navigationPropertyType, navigationPropertyIndex));
        }
Exemple #2
0
        /// <inheritdoc/>
        public override SyntaxNode VisitNavigationExpression(UvssNavigationExpressionSyntax node)
        {
            var unchanged = true;

            var newPipeToken = (SyntaxToken)Visit(node.PipeToken);

            if (newPipeToken != node.PipeToken)
            {
                unchanged = false;
            }

            var newPropertyName = (UvssPropertyNameSyntax)Visit(node.PropertyName);

            if (newPropertyName != node.PropertyName)
            {
                unchanged = false;
            }

            var newIndexer = (UvssNavigationExpressionIndexerSyntax)Visit(node.Indexer);

            if (newIndexer != node.Indexer)
            {
                unchanged = false;
            }

            var newAsKeyword = (SyntaxToken)Visit(node.AsKeyword);

            if (newAsKeyword != node.AsKeyword)
            {
                unchanged = false;
            }

            var newTypeNameIdentifier = (UvssIdentifierBaseSyntax)Visit(node.TypeNameIdentifier);

            if (newTypeNameIdentifier != node.TypeNameIdentifier)
            {
                unchanged = false;
            }

            return(unchanged ? node : new UvssNavigationExpressionSyntax(
                       newPipeToken,
                       newPropertyName,
                       newIndexer,
                       newAsKeyword,
                       newTypeNameIdentifier));
        }
 /// <summary>
 /// Visits the specified navigation expression node.
 /// </summary>
 /// <param name="node">The node to visit.</param>
 /// <returns>A node which should replace the visited node, or a reference to the visited node
 /// itself if no changes were made.</returns>
 public virtual SyntaxNode VisitNavigationExpression(UvssNavigationExpressionSyntax node)
 {
     return(VisitSyntaxNode(node));
 }
 /// <summary>
 /// Visits a navigation expression node.
 /// </summary>
 /// <param name="navigationExpression">The navigation expression node to visit.</param>
 private void VisitNavigationExpression(UvssNavigationExpressionSyntax navigationExpression)
 {
     Style(navigationExpression.TypeNameIdentifier, typeUvssTypeName);
 }