Search in sources :

Example 1 with SEALED

use of org.apache.groovy.parser.antlr4.GroovyParser.SEALED in project groovy by apache.

the class AstBuilder method visitClassDeclaration.

@Override
public ClassNode visitClassDeclaration(final ClassDeclarationContext ctx) {
    String packageName = Optional.ofNullable(moduleNode.getPackageName()).orElse("");
    String className = this.visitIdentifier(ctx.identifier());
    if (VAR_STR.equals(className)) {
        throw createParsingFailedException("var cannot be used for type declarations", ctx.identifier());
    }
    boolean isAnnotation = asBoolean(ctx.AT());
    if (isAnnotation) {
        if (asBoolean(ctx.typeParameters())) {
            throw createParsingFailedException("annotation declaration cannot have type parameters", ctx.typeParameters());
        }
        if (asBoolean(ctx.EXTENDS())) {
            throw createParsingFailedException("No extends clause allowed for annotation declaration", ctx.EXTENDS());
        }
        if (asBoolean(ctx.IMPLEMENTS())) {
            throw createParsingFailedException("No implements clause allowed for annotation declaration", ctx.IMPLEMENTS());
        }
    }
    boolean isEnum = asBoolean(ctx.ENUM());
    if (isEnum) {
        if (asBoolean(ctx.typeParameters())) {
            throw createParsingFailedException("enum declaration cannot have type parameters", ctx.typeParameters());
        }
        if (asBoolean(ctx.EXTENDS())) {
            throw createParsingFailedException("No extends clause allowed for enum declaration", ctx.EXTENDS());
        }
    }
    boolean isInterface = (asBoolean(ctx.INTERFACE()) && !isAnnotation);
    if (isInterface) {
        if (asBoolean(ctx.IMPLEMENTS())) {
            throw createParsingFailedException("No implements clause allowed for interface declaration", ctx.IMPLEMENTS());
        }
    }
    List<ModifierNode> modifierNodeList = ctx.getNodeMetaData(TYPE_DECLARATION_MODIFIERS);
    Objects.requireNonNull(modifierNodeList, "modifierNodeList should not be null");
    ModifierManager modifierManager = new ModifierManager(this, modifierNodeList);
    Optional<ModifierNode> finalModifierNodeOptional = modifierManager.get(FINAL);
    Optional<ModifierNode> sealedModifierNodeOptional = modifierManager.get(SEALED);
    Optional<ModifierNode> nonSealedModifierNodeOptional = modifierManager.get(NON_SEALED);
    boolean isFinal = finalModifierNodeOptional.isPresent();
    boolean isSealed = sealedModifierNodeOptional.isPresent();
    boolean isNonSealed = nonSealedModifierNodeOptional.isPresent();
    boolean isRecord = asBoolean(ctx.RECORD());
    boolean hasRecordHeader = asBoolean(ctx.formalParameters());
    if (isRecord) {
        if (asBoolean(ctx.EXTENDS())) {
            throw createParsingFailedException("No extends clause allowed for record declaration", ctx.EXTENDS());
        }
        if (!hasRecordHeader) {
            throw createParsingFailedException("header declaration of record is expected", ctx.identifier());
        }
        if (isSealed) {
            throw createParsingFailedException("`sealed` is not allowed for record declaration", sealedModifierNodeOptional.get());
        }
        if (isNonSealed) {
            throw createParsingFailedException("`non-sealed` is not allowed for record declaration", nonSealedModifierNodeOptional.get());
        }
    } else {
        if (hasRecordHeader) {
            throw createParsingFailedException("header declaration is only allowed for record declaration", ctx.formalParameters());
        }
    }
    if (isSealed && isNonSealed) {
        throw createParsingFailedException("type cannot be defined with both `sealed` and `non-sealed`", nonSealedModifierNodeOptional.get());
    }
    if (isFinal && (isSealed || isNonSealed)) {
        throw createParsingFailedException("type cannot be defined with both " + (isSealed ? "`sealed`" : "`non-sealed`") + " and `final`", finalModifierNodeOptional.get());
    }
    if ((isAnnotation || isEnum) && (isSealed || isNonSealed)) {
        ModifierNode mn = isSealed ? sealedModifierNodeOptional.get() : nonSealedModifierNodeOptional.get();
        throw createParsingFailedException("modifier `" + mn.getText() + "` is not allowed for " + (isEnum ? "enum" : "annotation definition"), mn);
    }
    boolean hasPermits = asBoolean(ctx.PERMITS());
    if (!isSealed && hasPermits) {
        throw createParsingFailedException("only sealed type declarations should have `permits` clause", ctx);
    }
    int modifiers = modifierManager.getClassModifiersOpValue();
    boolean syntheticPublic = ((modifiers & Opcodes.ACC_SYNTHETIC) != 0);
    modifiers &= ~Opcodes.ACC_SYNTHETIC;
    ClassNode classNode, outerClass = classNodeStack.peek();
    if (isEnum) {
        classNode = EnumHelper.makeEnumNode(asBoolean(outerClass) ? className : packageName + className, modifiers, null, outerClass);
    } else if (asBoolean(outerClass)) {
        if (outerClass.isInterface())
            modifiers |= Opcodes.ACC_STATIC;
        classNode = new InnerClassNode(outerClass, outerClass.getName() + "$" + className, modifiers, ClassHelper.OBJECT_TYPE.getPlainNodeReference());
    } else {
        classNode = new ClassNode(packageName + className, modifiers, ClassHelper.OBJECT_TYPE.getPlainNodeReference());
    }
    configureAST(classNode, ctx);
    classNode.setSyntheticPublic(syntheticPublic);
    classNode.setGenericsTypes(this.visitTypeParameters(ctx.typeParameters()));
    boolean isInterfaceWithDefaultMethods = (isInterface && this.containsDefaultMethods(ctx));
    if (isSealed) {
        AnnotationNode sealedAnnotationNode = new AnnotationNode(ClassHelper.makeCached(Sealed.class));
        if (asBoolean(ctx.ps)) {
            ListExpression permittedSubclassesListExpression = listX(Arrays.stream(this.visitTypeList(ctx.ps)).map(ClassExpression::new).collect(Collectors.toList()));
            sealedAnnotationNode.setMember("permittedSubclasses", permittedSubclassesListExpression);
            configureAST(sealedAnnotationNode, ctx.PERMITS());
            sealedAnnotationNode.setNodeMetaData("permits", true);
        }
        classNode.addAnnotation(sealedAnnotationNode);
    } else if (isNonSealed) {
        classNode.addAnnotation(new AnnotationNode(ClassHelper.makeCached(NonSealed.class)));
    }
    if (isInterfaceWithDefaultMethods || asBoolean(ctx.TRAIT())) {
        classNode.addAnnotation(new AnnotationNode(ClassHelper.makeCached(Trait.class)));
    }
    if (isRecord) {
        classNode.addAnnotation(new AnnotationNode(RECORD_TYPE_CLASS));
    }
    classNode.addAnnotations(modifierManager.getAnnotations());
    if (isInterfaceWithDefaultMethods) {
        classNode.putNodeMetaData(IS_INTERFACE_WITH_DEFAULT_METHODS, Boolean.TRUE);
    }
    classNode.putNodeMetaData(CLASS_NAME, className);
    if (asBoolean(ctx.CLASS()) || asBoolean(ctx.TRAIT())) {
        if (asBoolean(ctx.scs)) {
            ClassNode[] scs = this.visitTypeList(ctx.scs);
            if (scs.length > 1) {
                throw createParsingFailedException("Cannot extend multiple classes", ctx.EXTENDS());
            }
            classNode.setSuperClass(scs[0]);
        }
        classNode.setInterfaces(this.visitTypeList(ctx.is));
        this.initUsingGenerics(classNode);
    } else if (isInterfaceWithDefaultMethods) {
        // GROOVY-9259
        classNode.setInterfaces(this.visitTypeList(ctx.scs));
        this.initUsingGenerics(classNode);
    } else if (isInterface) {
        classNode.setModifiers(classNode.getModifiers() | Opcodes.ACC_INTERFACE | Opcodes.ACC_ABSTRACT);
        classNode.setInterfaces(this.visitTypeList(ctx.scs));
        this.initUsingGenerics(classNode);
        this.hackMixins(classNode);
    } else if (isEnum || isRecord) {
        classNode.setInterfaces(this.visitTypeList(ctx.is));
        this.initUsingGenerics(classNode);
        if (isRecord) {
            transformRecordHeaderToProperties(ctx, classNode);
        }
    } else if (isAnnotation) {
        classNode.setModifiers(classNode.getModifiers() | Opcodes.ACC_INTERFACE | Opcodes.ACC_ABSTRACT | Opcodes.ACC_ANNOTATION);
        classNode.addInterface(ClassHelper.Annotation_TYPE);
        this.hackMixins(classNode);
    } else {
        throw createParsingFailedException("Unsupported class declaration: " + ctx.getText(), ctx);
    }
    // have here to ensure it won't be the inner class
    if (asBoolean(ctx.CLASS()) || asBoolean(ctx.TRAIT())) {
        classNodeList.add(classNode);
    }
    classNodeStack.push(classNode);
    ctx.classBody().putNodeMetaData(CLASS_DECLARATION_CLASS_NODE, classNode);
    this.visitClassBody(ctx.classBody());
    if (isRecord) {
        Optional<FieldNode> fieldNodeOptional = classNode.getFields().stream().filter(f -> !isTrue(f, IS_RECORD_GENERATED) && !f.isStatic()).findFirst();
        if (fieldNodeOptional.isPresent()) {
            createParsingFailedException("Instance field is not allowed in `record`", fieldNodeOptional.get());
        }
    }
    classNodeStack.pop();
    if (!(asBoolean(ctx.CLASS()) || asBoolean(ctx.TRAIT()))) {
        classNodeList.add(classNode);
    }
    groovydocManager.handle(classNode, ctx);
    return classNode;
}
Also used : CastParExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.CastParExpressionContext) SUB(org.apache.groovy.parser.antlr4.GroovyParser.SUB) CastExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.CastExprAltContext) ConditionalExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.ConditionalExprAltContext) DEFAULT(org.apache.groovy.parser.antlr4.GroovyParser.DEFAULT) IdentifierContext(org.apache.groovy.parser.antlr4.GroovyParser.IdentifierContext) SEALED(org.apache.groovy.parser.antlr4.GroovyParser.SEALED) QualifiedClassNameListContext(org.apache.groovy.parser.antlr4.GroovyParser.QualifiedClassNameListContext) ModifierContext(org.apache.groovy.parser.antlr4.GroovyParser.ModifierContext) ElementValuePairsContext(org.apache.groovy.parser.antlr4.GroovyParser.ElementValuePairsContext) BlockStatementContext(org.apache.groovy.parser.antlr4.GroovyParser.BlockStatementContext) PathExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.PathExpressionContext) NonSealed(groovy.transform.NonSealed) EnumConstantsContext(org.apache.groovy.parser.antlr4.GroovyParser.EnumConstantsContext) Map(java.util.Map) ListContext(org.apache.groovy.parser.antlr4.GroovyParser.ListContext) Sealed(groovy.transform.Sealed) PropertyNode(org.codehaus.groovy.ast.PropertyNode) Trait(groovy.transform.Trait) TypeNamePairContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeNamePairContext) UnaryMinusExpression(org.codehaus.groovy.ast.expr.UnaryMinusExpression) ClosureListExpression(org.codehaus.groovy.ast.expr.ClosureListExpression) Recognizer(org.antlr.v4.runtime.Recognizer) QualifiedNameElementContext(org.apache.groovy.parser.antlr4.GroovyParser.QualifiedNameElementContext) EnhancedStatementExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.EnhancedStatementExpressionContext) EmptyDimsContext(org.apache.groovy.parser.antlr4.GroovyParser.EmptyDimsContext) ArgumentListExpression(org.codehaus.groovy.ast.expr.ArgumentListExpression) ClosureOrLambdaExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.ClosureOrLambdaExpressionContext) CommandExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.CommandExpressionContext) CommandExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.CommandExprAltContext) GstringValueContext(org.apache.groovy.parser.antlr4.GroovyParser.GstringValueContext) ArrayInitializerContext(org.apache.groovy.parser.antlr4.GroovyParser.ArrayInitializerContext) MethodReferenceExpression(org.codehaus.groovy.ast.expr.MethodReferenceExpression) Stream(java.util.stream.Stream) TernaryExpression(org.codehaus.groovy.ast.expr.TernaryExpression) AssertStatement(org.codehaus.groovy.ast.stmt.AssertStatement) DefaultGroovyMethods.asBoolean(org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean) IdentifierPrmrAltContext(org.apache.groovy.parser.antlr4.GroovyParser.IdentifierPrmrAltContext) AndExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.AndExprAltContext) DEC(org.apache.groovy.parser.antlr4.GroovyParser.DEC) PropertyExpression(org.codehaus.groovy.ast.expr.PropertyExpression) DEF(org.apache.groovy.parser.antlr4.GroovyParser.DEF) GeneralUtils.declS(org.codehaus.groovy.ast.tools.GeneralUtils.declS) VariableDeclaratorIdContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableDeclaratorIdContext) YieldStatementContext(org.apache.groovy.parser.antlr4.GroovyLangParser.YieldStatementContext) LinkedHashMap(java.util.LinkedHashMap) EnhancedForControlContext(org.apache.groovy.parser.antlr4.GroovyParser.EnhancedForControlContext) PrefixExpression(org.codehaus.groovy.ast.expr.PrefixExpression) SystemUtil(org.apache.groovy.util.SystemUtil) ExpressionStatement(org.codehaus.groovy.ast.stmt.ExpressionStatement) GeneralUtils.returnS(org.codehaus.groovy.ast.tools.GeneralUtils.returnS) GroovyParserRuleContext(org.apache.groovy.parser.antlr4.GroovyParser.GroovyParserRuleContext) PowerExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.PowerExprAltContext) StandardLambdaExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.StandardLambdaExpressionContext) PostfixExpression(org.codehaus.groovy.ast.expr.PostfixExpression) StringUtils(org.apache.groovy.parser.antlr4.util.StringUtils) ElementValuePairContext(org.apache.groovy.parser.antlr4.GroovyParser.ElementValuePairContext) Expression(org.codehaus.groovy.ast.expr.Expression) AnnotationNameContext(org.apache.groovy.parser.antlr4.GroovyParser.AnnotationNameContext) FINAL(org.apache.groovy.parser.antlr4.GroovyParser.FINAL) Opcodes(org.objectweb.asm.Opcodes) CompileStatic(groovy.transform.CompileStatic) UnaryPlusExpression(org.codehaus.groovy.ast.expr.UnaryPlusExpression) SourceUnit(org.codehaus.groovy.control.SourceUnit) ClassNode(org.codehaus.groovy.ast.ClassNode) SwitchExpressionLabelContext(org.apache.groovy.parser.antlr4.GroovyLangParser.SwitchExpressionLabelContext) ForStmtAltContext(org.apache.groovy.parser.antlr4.GroovyParser.ForStmtAltContext) BreakStatement(org.codehaus.groovy.ast.stmt.BreakStatement) GeneralUtils.listX(org.codehaus.groovy.ast.tools.GeneralUtils.listX) GeneralUtils.localVarX(org.codehaus.groovy.ast.tools.GeneralUtils.localVarX) GenericsType(org.codehaus.groovy.ast.GenericsType) IOException(java.io.IOException) PredictionMode(org.antlr.v4.runtime.atn.PredictionMode) ForControlContext(org.apache.groovy.parser.antlr4.GroovyParser.ForControlContext) ReturnStatement(org.codehaus.groovy.ast.stmt.ReturnStatement) AnnotationConstantExpression(org.codehaus.groovy.ast.expr.AnnotationConstantExpression) VariableModifiersContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableModifiersContext) CompilationUnitContext(org.apache.groovy.parser.antlr4.GroovyParser.CompilationUnitContext) RecognitionException(org.antlr.v4.runtime.RecognitionException) BitwiseNegationExpression(org.codehaus.groovy.ast.expr.BitwiseNegationExpression) TupleConstructor(groovy.transform.TupleConstructor) ANTLRErrorListener(org.antlr.v4.runtime.ANTLRErrorListener) IfElseStatementContext(org.apache.groovy.parser.antlr4.GroovyParser.IfElseStatementContext) MapEntryLabelContext(org.apache.groovy.parser.antlr4.GroovyParser.MapEntryLabelContext) AS(org.apache.groovy.parser.antlr4.GroovyParser.AS) EqualityExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.EqualityExprAltContext) GeneralUtils.stmt(org.codehaus.groovy.ast.tools.GeneralUtils.stmt) Interval(org.antlr.v4.runtime.misc.Interval) IntegerLiteralAltContext(org.apache.groovy.parser.antlr4.GroovyParser.IntegerLiteralAltContext) MapExpression(org.codehaus.groovy.ast.expr.MapExpression) TypeArgumentsContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeArgumentsContext) CompilePhase(org.codehaus.groovy.control.CompilePhase) TokenStream(org.antlr.v4.runtime.TokenStream) AtnManager(org.apache.groovy.parser.antlr4.internal.atnmanager.AtnManager) ExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.ExpressionContext) ConstantExpression(org.codehaus.groovy.ast.expr.ConstantExpression) ClosureUtils(org.codehaus.groovy.ast.tools.ClosureUtils) ModuleNode(org.codehaus.groovy.ast.ModuleNode) LogicalAndExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.LogicalAndExprAltContext) FormalParameterContext(org.apache.groovy.parser.antlr4.GroovyParser.FormalParameterContext) EnumConstantClassNode(org.codehaus.groovy.ast.EnumConstantClassNode) BlockContext(org.apache.groovy.parser.antlr4.GroovyParser.BlockContext) Numbers(org.codehaus.groovy.syntax.Numbers) SwitchLabelContext(org.apache.groovy.parser.antlr4.GroovyParser.SwitchLabelContext) BreakStatementContext(org.apache.groovy.parser.antlr4.GroovyParser.BreakStatementContext) BuiltInTypeContext(org.apache.groovy.parser.antlr4.GroovyParser.BuiltInTypeContext) MethodNameContext(org.apache.groovy.parser.antlr4.GroovyParser.MethodNameContext) CreatorContext(org.apache.groovy.parser.antlr4.GroovyParser.CreatorContext) ForStatement(org.codehaus.groovy.ast.stmt.ForStatement) INC(org.apache.groovy.parser.antlr4.GroovyParser.INC) LabeledStmtAltContext(org.apache.groovy.parser.antlr4.GroovyParser.LabeledStmtAltContext) MethodDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.MethodDeclarationContext) ScriptStatementsContext(org.apache.groovy.parser.antlr4.GroovyParser.ScriptStatementsContext) NamedPropertyArgsContext(org.apache.groovy.parser.antlr4.GroovyParser.NamedPropertyArgsContext) ExclusiveOrExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.ExclusiveOrExprAltContext) Types(org.codehaus.groovy.syntax.Types) GeneralUtils.closureX(org.codehaus.groovy.ast.tools.GeneralUtils.closureX) DefaultGroovyMethods(org.codehaus.groovy.runtime.DefaultGroovyMethods) ThisPrmrAltContext(org.apache.groovy.parser.antlr4.GroovyParser.ThisPrmrAltContext) SwitchBlockStatementGroupContext(org.apache.groovy.parser.antlr4.GroovyParser.SwitchBlockStatementGroupContext) StringGroovyMethods(org.codehaus.groovy.runtime.StringGroovyMethods) Collectors(java.util.stream.Collectors) NotExpression(org.codehaus.groovy.ast.expr.NotExpression) PrimitiveTypeContext(org.apache.groovy.parser.antlr4.GroovyParser.PrimitiveTypeContext) InnerClassNode(org.codehaus.groovy.ast.InnerClassNode) Objects(java.util.Objects) ARROW(org.apache.groovy.parser.antlr4.GroovyLangParser.ARROW) IfStatement(org.codehaus.groovy.ast.stmt.IfStatement) MapContext(org.apache.groovy.parser.antlr4.GroovyParser.MapContext) NewPrmrAltContext(org.apache.groovy.parser.antlr4.GroovyParser.NewPrmrAltContext) EnhancedArgumentListInParContext(org.apache.groovy.parser.antlr4.GroovyParser.EnhancedArgumentListInParContext) ForUpdateContext(org.apache.groovy.parser.antlr4.GroovyParser.ForUpdateContext) RegexExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.RegexExprAltContext) INSTANCEOF(org.apache.groovy.parser.antlr4.GroovyParser.INSTANCEOF) AnnotationNode(org.codehaus.groovy.ast.AnnotationNode) VariableDeclaratorContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableDeclaratorContext) CompactConstructorDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.CompactConstructorDeclarationContext) TypeArgumentsOrDiamondContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeArgumentsOrDiamondContext) Verifier(org.codehaus.groovy.classgen.Verifier) ContinueStatementContext(org.apache.groovy.parser.antlr4.GroovyParser.ContinueStatementContext) Maps(org.apache.groovy.util.Maps) Tuple2(groovy.lang.Tuple2) NOT_IN(org.apache.groovy.parser.antlr4.GroovyParser.NOT_IN) Tuple3(groovy.lang.Tuple3) ThrowStatement(org.codehaus.groovy.ast.stmt.ThrowStatement) VariableNamesContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableNamesContext) GeneralUtils.varX(org.codehaus.groovy.ast.tools.GeneralUtils.varX) EmptyExpression(org.codehaus.groovy.ast.expr.EmptyExpression) LinkedList(java.util.LinkedList) AnnotationContext(org.apache.groovy.parser.antlr4.GroovyParser.AnnotationContext) GstringContext(org.apache.groovy.parser.antlr4.GroovyParser.GstringContext) ConstructorCallExpression(org.codehaus.groovy.ast.expr.ConstructorCallExpression) DynamicMemberNameContext(org.apache.groovy.parser.antlr4.GroovyParser.DynamicMemberNameContext) MapEntryContext(org.apache.groovy.parser.antlr4.GroovyParser.MapEntryContext) StatementContext(org.apache.groovy.parser.antlr4.GroovyParser.StatementContext) DoWhileStmtAltContext(org.apache.groovy.parser.antlr4.GroovyParser.DoWhileStmtAltContext) ClassHelper(org.codehaus.groovy.ast.ClassHelper) GeneralUtils.cloneParams(org.codehaus.groovy.ast.tools.GeneralUtils.cloneParams) ShiftExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.ShiftExprAltContext) ClassBodyDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassBodyDeclarationContext) DescriptiveErrorStrategy(org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy) TypeUtil.isPrimitiveType(org.codehaus.groovy.classgen.asm.util.TypeUtil.isPrimitiveType) SynchronizedStatement(org.codehaus.groovy.ast.stmt.SynchronizedStatement) ClassExpression(org.codehaus.groovy.ast.expr.ClassExpression) ReturnTypeContext(org.apache.groovy.parser.antlr4.GroovyParser.ReturnTypeContext) ASTNode(org.codehaus.groovy.ast.ASTNode) TupleExpression(org.codehaus.groovy.ast.expr.TupleExpression) NonWildcardTypeArgumentsContext(org.apache.groovy.parser.antlr4.GroovyParser.NonWildcardTypeArgumentsContext) ThisFormalParameterContext(org.apache.groovy.parser.antlr4.GroovyParser.ThisFormalParameterContext) TryCatchStatement(org.codehaus.groovy.ast.stmt.TryCatchStatement) RANGE_EXCLUSIVE_RIGHT(org.apache.groovy.parser.antlr4.GroovyParser.RANGE_EXCLUSIVE_RIGHT) MethodPointerExpression(org.codehaus.groovy.ast.expr.MethodPointerExpression) BooleanLiteralAltContext(org.apache.groovy.parser.antlr4.GroovyParser.BooleanLiteralAltContext) ConstructorNode(org.codehaus.groovy.ast.ConstructorNode) MapEntryExpression(org.codehaus.groovy.ast.expr.MapEntryExpression) ClassOrInterfaceModifierContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassOrInterfaceModifierContext) SyntaxException(org.codehaus.groovy.syntax.SyntaxException) PRIVATE(org.apache.groovy.parser.antlr4.GroovyParser.PRIVATE) InclusiveOrExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.InclusiveOrExprAltContext) ElementValueArrayInitializerContext(org.apache.groovy.parser.antlr4.GroovyParser.ElementValueArrayInitializerContext) Arrays(java.util.Arrays) Token(org.antlr.v4.runtime.Token) CharStreams(org.antlr.v4.runtime.CharStreams) NamePartContext(org.apache.groovy.parser.antlr4.GroovyParser.NamePartContext) GE(org.apache.groovy.parser.antlr4.GroovyParser.GE) EnumConstantContext(org.apache.groovy.parser.antlr4.GroovyParser.EnumConstantContext) LocalVariableDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.LocalVariableDeclarationContext) ClassBodyContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassBodyContext) MethodBodyContext(org.apache.groovy.parser.antlr4.GroovyParser.MethodBodyContext) WhileStmtAltContext(org.apache.groovy.parser.antlr4.GroovyParser.WhileStmtAltContext) CaseStatement(org.codehaus.groovy.ast.stmt.CaseStatement) CommandArgumentContext(org.apache.groovy.parser.antlr4.GroovyParser.CommandArgumentContext) CreatedNameContext(org.apache.groovy.parser.antlr4.GroovyParser.CreatedNameContext) NOT_INSTANCEOF(org.apache.groovy.parser.antlr4.GroovyParser.NOT_INSTANCEOF) IndexPropertyArgsContext(org.apache.groovy.parser.antlr4.GroovyParser.IndexPropertyArgsContext) TypeBoundContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeBoundContext) GT(org.apache.groovy.parser.antlr4.GroovyParser.GT) ParExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.ParExpressionContext) ClosureContext(org.apache.groovy.parser.antlr4.GroovyParser.ClosureContext) VariableExpression(org.codehaus.groovy.ast.expr.VariableExpression) PackageNode(org.codehaus.groovy.ast.PackageNode) ModifierNode(org.codehaus.groovy.ast.ModifierNode) AnnotatedNodeUtils(org.apache.groovy.ast.tools.AnnotatedNodeUtils) ConditionalStatementContext(org.apache.groovy.parser.antlr4.GroovyParser.ConditionalStatementContext) EnhancedArgumentListElementContext(org.apache.groovy.parser.antlr4.GroovyParser.EnhancedArgumentListElementContext) AssertStatementContext(org.apache.groovy.parser.antlr4.GroovyParser.AssertStatementContext) ClassHelper.isPrimitiveVoid(org.codehaus.groovy.ast.ClassHelper.isPrimitiveVoid) NON_SEALED(org.apache.groovy.parser.antlr4.GroovyParser.NON_SEALED) GeneralUtils.callX(org.codehaus.groovy.ast.tools.GeneralUtils.callX) TerminalNode(org.antlr.v4.runtime.tree.TerminalNode) PositionConfigureUtils.configureAST(org.apache.groovy.parser.antlr4.util.PositionConfigureUtils.configureAST) SwitchExpressionContext(org.apache.groovy.parser.antlr4.GroovyLangParser.SwitchExpressionContext) CompilationFailedException(org.codehaus.groovy.control.CompilationFailedException) AnnotationsOptContext(org.apache.groovy.parser.antlr4.GroovyParser.AnnotationsOptContext) CastExpression(org.codehaus.groovy.ast.expr.CastExpression) ParserRuleContext(org.antlr.v4.runtime.ParserRuleContext) RelationalExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.RelationalExprAltContext) BooleanExpression(org.codehaus.groovy.ast.expr.BooleanExpression) BlockStatementsOptContext(org.apache.groovy.parser.antlr4.GroovyParser.BlockStatementsOptContext) ImportDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.ImportDeclarationContext) ThrowStmtAltContext(org.apache.groovy.parser.antlr4.GroovyParser.ThrowStmtAltContext) FieldDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.FieldDeclarationContext) FinallyBlockContext(org.apache.groovy.parser.antlr4.GroovyParser.FinallyBlockContext) StandardLambdaParametersContext(org.apache.groovy.parser.antlr4.GroovyParser.StandardLambdaParametersContext) LambdaExpression(org.codehaus.groovy.ast.expr.LambdaExpression) LoopStmtAltContext(org.apache.groovy.parser.antlr4.GroovyParser.LoopStmtAltContext) WhileStatement(org.codehaus.groovy.ast.stmt.WhileStatement) ArrayList(java.util.ArrayList) StringLiteralContext(org.apache.groovy.parser.antlr4.GroovyParser.StringLiteralContext) CharStream(org.antlr.v4.runtime.CharStream) EmptyDimsOptContext(org.apache.groovy.parser.antlr4.GroovyParser.EmptyDimsOptContext) MethodNode(org.codehaus.groovy.ast.MethodNode) NullLiteralAltContext(org.apache.groovy.parser.antlr4.GroovyParser.NullLiteralAltContext) CatchClauseContext(org.apache.groovy.parser.antlr4.GroovyParser.CatchClauseContext) ClassDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassDeclarationContext) ParseTree(org.antlr.v4.runtime.tree.ParseTree) VariableInitializerContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableInitializerContext) MultipleAssignmentExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.MultipleAssignmentExprAltContext) RANGE_EXCLUSIVE_FULL(org.apache.groovy.parser.antlr4.GroovyParser.RANGE_EXCLUSIVE_FULL) Parameter(org.codehaus.groovy.ast.Parameter) VariableInitializersContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableInitializersContext) FloatingPointLiteralAltContext(org.apache.groovy.parser.antlr4.GroovyParser.FloatingPointLiteralAltContext) SwitchExprAltContext(org.apache.groovy.parser.antlr4.GroovyLangParser.SwitchExprAltContext) VAR(org.apache.groovy.parser.antlr4.GroovyParser.VAR) ClassOrInterfaceModifiersContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassOrInterfaceModifiersContext) IN(org.apache.groovy.parser.antlr4.GroovyParser.IN) ExpressionListContext(org.apache.groovy.parser.antlr4.GroovyParser.ExpressionListContext) EmptyStatement(org.codehaus.groovy.ast.stmt.EmptyStatement) TypeDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeDeclarationContext) ElementValuesContext(org.apache.groovy.parser.antlr4.GroovyParser.ElementValuesContext) PackageDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.PackageDeclarationContext) GStringExpression(org.codehaus.groovy.ast.expr.GStringExpression) BufferedReader(java.io.BufferedReader) ArrayDeque(java.util.ArrayDeque) DefaultGroovyMethods.last(org.codehaus.groovy.runtime.DefaultGroovyMethods.last) ResourceContext(org.apache.groovy.parser.antlr4.GroovyParser.ResourceContext) ListExpression(org.codehaus.groovy.ast.expr.ListExpression) SAFE_INDEX(org.apache.groovy.parser.antlr4.GroovyParser.SAFE_INDEX) TryCatchStatementContext(org.apache.groovy.parser.antlr4.GroovyParser.TryCatchStatementContext) SynchronizedStmtAltContext(org.apache.groovy.parser.antlr4.GroovyParser.SynchronizedStmtAltContext) MapEntryListContext(org.apache.groovy.parser.antlr4.GroovyParser.MapEntryListContext) ElementValueContext(org.apache.groovy.parser.antlr4.GroovyParser.ElementValueContext) VariableDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableDeclarationContext) CommonTokenStream(org.antlr.v4.runtime.CommonTokenStream) ClassNameContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassNameContext) TypeListContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeListContext) CatchTypeContext(org.apache.groovy.parser.antlr4.GroovyParser.CatchTypeContext) RangeExpression(org.codehaus.groovy.ast.expr.RangeExpression) UnaryNotExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.UnaryNotExprAltContext) GeneralUtils.assignX(org.codehaus.groovy.ast.tools.GeneralUtils.assignX) ModifiersOptContext(org.apache.groovy.parser.antlr4.GroovyParser.ModifiersOptContext) NamedArgumentListExpression(org.codehaus.groovy.ast.expr.NamedArgumentListExpression) VariableModifierContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableModifierContext) SwitchBlockStatementExpressionGroupContext(org.apache.groovy.parser.antlr4.GroovyLangParser.SwitchBlockStatementExpressionGroupContext) PathElementContext(org.apache.groovy.parser.antlr4.GroovyParser.PathElementContext) UnaryAddExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.UnaryAddExprAltContext) TypeNamePairsContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeNamePairsContext) AnnotatedQualifiedClassNameContext(org.apache.groovy.parser.antlr4.GroovyParser.AnnotatedQualifiedClassNameContext) SpreadExpression(org.codehaus.groovy.ast.expr.SpreadExpression) AnonymousInnerClassDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.AnonymousInnerClassDeclarationContext) ForInitContext(org.apache.groovy.parser.antlr4.GroovyParser.ForInitContext) VariableModifiersOptContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableModifiersOptContext) ArrayExpression(org.codehaus.groovy.ast.expr.ArrayExpression) MultiplicativeExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.MultiplicativeExprAltContext) SyntaxErrorMessage(org.codehaus.groovy.control.messages.SyntaxErrorMessage) AssignmentExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.AssignmentExprAltContext) CatchStatement(org.codehaus.groovy.ast.stmt.CatchStatement) TypeArgumentContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeArgumentContext) VariableDeclaratorsContext(org.apache.groovy.parser.antlr4.GroovyParser.VariableDeclaratorsContext) TypeParameterContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeParameterContext) GroovyBugError(org.codehaus.groovy.GroovyBugError) ReturnStmtAltContext(org.apache.groovy.parser.antlr4.GroovyParser.ReturnStmtAltContext) List(java.util.List) BinaryExpression(org.codehaus.groovy.ast.expr.BinaryExpression) TypeParametersContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeParametersContext) ArgumentsContext(org.apache.groovy.parser.antlr4.GroovyParser.ArgumentsContext) BlockStatement(org.codehaus.groovy.ast.stmt.BlockStatement) LE(org.apache.groovy.parser.antlr4.GroovyParser.LE) BlockStatementsContext(org.apache.groovy.parser.antlr4.GroovyParser.BlockStatementsContext) Optional(java.util.Optional) GstringPathContext(org.apache.groovy.parser.antlr4.GroovyParser.GstringPathContext) QualifiedStandardClassNameContext(org.apache.groovy.parser.antlr4.GroovyParser.QualifiedStandardClassNameContext) KeywordsContext(org.apache.groovy.parser.antlr4.GroovyParser.KeywordsContext) AdditiveExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.AdditiveExprAltContext) NodeMetaDataHandler(org.codehaus.groovy.ast.NodeMetaDataHandler) ClassicalForControlContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassicalForControlContext) Statement(org.codehaus.groovy.ast.stmt.Statement) ParseCancellationException(org.antlr.v4.runtime.misc.ParseCancellationException) CodeVisitorSupport(org.codehaus.groovy.ast.CodeVisitorSupport) ElvisOperatorExpression(org.codehaus.groovy.ast.expr.ElvisOperatorExpression) STATIC(org.apache.groovy.parser.antlr4.GroovyParser.STATIC) LT(org.apache.groovy.parser.antlr4.GroovyParser.LT) Deque(java.util.Deque) ResourceListContext(org.apache.groovy.parser.antlr4.GroovyParser.ResourceListContext) SwitchStatementContext(org.apache.groovy.parser.antlr4.GroovyParser.SwitchStatementContext) SuperPrmrAltContext(org.apache.groovy.parser.antlr4.GroovyParser.SuperPrmrAltContext) EnumHelper(org.codehaus.groovy.antlr.EnumHelper) FormalParametersContext(org.apache.groovy.parser.antlr4.GroovyParser.FormalParametersContext) MethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression) DoWhileStatement(org.codehaus.groovy.ast.stmt.DoWhileStatement) ExpressionListElementContext(org.apache.groovy.parser.antlr4.GroovyParser.ExpressionListElementContext) LambdaBodyContext(org.apache.groovy.parser.antlr4.GroovyParser.LambdaBodyContext) ContinueStatement(org.codehaus.groovy.ast.stmt.ContinueStatement) QualifiedNameContext(org.apache.groovy.parser.antlr4.GroovyParser.QualifiedNameContext) SpreadMapExpression(org.codehaus.groovy.ast.expr.SpreadMapExpression) ResourcesContext(org.apache.groovy.parser.antlr4.GroovyParser.ResourcesContext) YieldStmtAltContext(org.apache.groovy.parser.antlr4.GroovyLangParser.YieldStmtAltContext) ADD(org.apache.groovy.parser.antlr4.GroovyParser.ADD) PostfixExpressionContext(org.apache.groovy.parser.antlr4.GroovyParser.PostfixExpressionContext) Iterator(java.util.Iterator) CASE(org.apache.groovy.parser.antlr4.GroovyParser.CASE) ExpressionInParContext(org.apache.groovy.parser.antlr4.GroovyParser.ExpressionInParContext) DimContext(org.apache.groovy.parser.antlr4.GroovyParser.DimContext) DeclarationExpression(org.codehaus.groovy.ast.expr.DeclarationExpression) ClosureExpression(org.codehaus.groovy.ast.expr.ClosureExpression) TypeContext(org.apache.groovy.parser.antlr4.GroovyParser.TypeContext) SwitchStatement(org.codehaus.groovy.ast.stmt.SwitchStatement) FormalParameterListContext(org.apache.groovy.parser.antlr4.GroovyParser.FormalParameterListContext) ImportNode(org.codehaus.groovy.ast.ImportNode) QualifiedClassNameContext(org.apache.groovy.parser.antlr4.GroovyParser.QualifiedClassNameContext) LogicalOrExprAltContext(org.apache.groovy.parser.antlr4.GroovyParser.LogicalOrExprAltContext) FieldNode(org.codehaus.groovy.ast.FieldNode) AttributeExpression(org.codehaus.groovy.ast.expr.AttributeExpression) RANGE_INCLUSIVE(org.apache.groovy.parser.antlr4.GroovyParser.RANGE_INCLUSIVE) ClassOrInterfaceTypeContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassOrInterfaceTypeContext) Tuple.tuple(groovy.lang.Tuple.tuple) RANGE_EXCLUSIVE_LEFT(org.apache.groovy.parser.antlr4.GroovyParser.RANGE_EXCLUSIVE_LEFT) ClassOrInterfaceModifiersOptContext(org.apache.groovy.parser.antlr4.GroovyParser.ClassOrInterfaceModifiersOptContext) MemberDeclarationContext(org.apache.groovy.parser.antlr4.GroovyParser.MemberDeclarationContext) Collections(java.util.Collections) ModifiersContext(org.apache.groovy.parser.antlr4.GroovyParser.ModifiersContext) ClassNode(org.codehaus.groovy.ast.ClassNode) EnumConstantClassNode(org.codehaus.groovy.ast.EnumConstantClassNode) InnerClassNode(org.codehaus.groovy.ast.InnerClassNode) NonSealed(groovy.transform.NonSealed) NonSealed(groovy.transform.NonSealed) Sealed(groovy.transform.Sealed) FieldNode(org.codehaus.groovy.ast.FieldNode) ClosureListExpression(org.codehaus.groovy.ast.expr.ClosureListExpression) ArgumentListExpression(org.codehaus.groovy.ast.expr.ArgumentListExpression) ListExpression(org.codehaus.groovy.ast.expr.ListExpression) NamedArgumentListExpression(org.codehaus.groovy.ast.expr.NamedArgumentListExpression) ClassExpression(org.codehaus.groovy.ast.expr.ClassExpression) InnerClassNode(org.codehaus.groovy.ast.InnerClassNode) AnnotationNode(org.codehaus.groovy.ast.AnnotationNode) ModifierNode(org.codehaus.groovy.ast.ModifierNode)

Aggregations

Tuple.tuple (groovy.lang.Tuple.tuple)1 Tuple2 (groovy.lang.Tuple2)1 Tuple3 (groovy.lang.Tuple3)1 CompileStatic (groovy.transform.CompileStatic)1 NonSealed (groovy.transform.NonSealed)1 Sealed (groovy.transform.Sealed)1 Trait (groovy.transform.Trait)1 TupleConstructor (groovy.transform.TupleConstructor)1 BufferedReader (java.io.BufferedReader)1 IOException (java.io.IOException)1 ArrayDeque (java.util.ArrayDeque)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 Deque (java.util.Deque)1 Iterator (java.util.Iterator)1 LinkedHashMap (java.util.LinkedHashMap)1 LinkedList (java.util.LinkedList)1 List (java.util.List)1 Map (java.util.Map)1