public Ust VisitClassOrInterfaceType(JavaParser.ClassOrInterfaceTypeContext context)
        {
            var id            = (IdToken)Visit(context.IDENTIFIER(0));
            var typeArguments = context.typeArguments();
            var typeNodes     = new StringBuilder();

            foreach (var typeArgument in typeArguments)
            {
                for (int i = 0; i < typeArgument.ChildCount; i++)
                {
                    if (typeArgument.GetChild(i) is ITerminalNode terminalNode)
                    {
                        typeNodes.Append(terminalNode.Symbol.Text);
                        continue;
                    }

                    if (typeArgument.GetChild(i) is JavaParser.TypeArgumentContext typeNode)
                    {
                        typeNodes.Append(((TypeToken)Visit(typeNode))?.TypeText);
                    }
                }
            }

            var result = new TypeToken(id.Id + typeNodes.ToString(), context.GetTextSpan());

            return(result);
        }
Example #2
0
        public override void EnterClassOrInterfaceType(JavaParser.ClassOrInterfaceTypeContext context)
        {
            TypeArgumentsListener typeArgumentsListener = new TypeArgumentsListener();
            List <string>         typeArguments         = new List <string>();

            foreach (JavaParser.TypeArgumentsContext typeArgumentsContext in context.typeArguments())
            {
                typeArgumentsContext.EnterRule(typeArgumentsListener);
                typeArguments.AddRange(typeArgumentsListener.typeArguments);
            }

            if (typeArguments.Any())
            {
                id = "";
            }

            foreach (string typeArgument in typeArguments)
            {
                id += typeArgument;
            }
        }