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); }
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; } }