Search in sources :

Example 1 with Flag

use of com.sun.tools.javac.code.Flags.Flag in project error-prone by google.

the class EmptySetMultibindingContributions method createReplacementClassModifiers.

private String createReplacementClassModifiers(VisitorState state, JCModifiers enclosingClassModifiers) {
    ImmutableList.Builder<String> classModifierStringsBuilder = ImmutableList.builder();
    for (JCAnnotation annotation : enclosingClassModifiers.annotations) {
        classModifierStringsBuilder.add(state.getSourceForNode(annotation));
    }
    EnumSet<Flag> classFlags = Flags.asFlagSet(enclosingClassModifiers.flags);
    classFlags.remove(Flags.Flag.FINAL);
    classFlags.add(Flags.Flag.ABSTRACT);
    for (Flag flag : classFlags) {
        classModifierStringsBuilder.add(flag.toString());
    }
    return Joiner.on(' ').join(classModifierStringsBuilder.build());
}
Also used : ImmutableList(com.google.common.collect.ImmutableList) Flag(com.sun.tools.javac.code.Flags.Flag) JCAnnotation(com.sun.tools.javac.tree.JCTree.JCAnnotation)

Example 2 with Flag

use of com.sun.tools.javac.code.Flags.Flag in project error-prone by google.

the class EmptySetMultibindingContributions method createReplacementMethodModifiers.

private String createReplacementMethodModifiers(VisitorState state, JCModifiers modifiers) {
    ImmutableList.Builder<String> modifierStringsBuilder = ImmutableList.<String>builder().add("@Multibinds");
    for (JCAnnotation annotation : modifiers.annotations) {
        Name annotationQualifiedName = ASTHelpers.getSymbol(annotation).getQualifiedName();
        if (!(annotationQualifiedName.contentEquals("dagger.Provides") || annotationQualifiedName.contentEquals("dagger.producers.Produces") || annotationQualifiedName.contentEquals("dagger.multibindings.ElementsIntoSet"))) {
            modifierStringsBuilder.add(state.getSourceForNode(annotation));
        }
    }
    EnumSet<Flag> methodFlags = Flags.asFlagSet(modifiers.flags);
    methodFlags.remove(Flags.Flag.STATIC);
    methodFlags.remove(Flags.Flag.FINAL);
    methodFlags.add(Flags.Flag.ABSTRACT);
    for (Flag flag : methodFlags) {
        modifierStringsBuilder.add(flag.toString());
    }
    return Joiner.on(' ').join(modifierStringsBuilder.build());
}
Also used : ImmutableList(com.google.common.collect.ImmutableList) Flag(com.sun.tools.javac.code.Flags.Flag) JCAnnotation(com.sun.tools.javac.tree.JCTree.JCAnnotation) Name(com.sun.tools.javac.util.Name)

Example 3 with Flag

use of com.sun.tools.javac.code.Flags.Flag in project error-prone by google.

the class UseBinds method convertMethodToBinds.

private SuggestedFix.Builder convertMethodToBinds(MethodTree method, VisitorState state) {
    SuggestedFix.Builder fix = SuggestedFix.builder();
    JCModifiers modifiers = ((JCMethodDecl) method).getModifiers();
    ImmutableList.Builder<String> modifierStringsBuilder = ImmutableList.<String>builder().add("@Binds");
    for (JCAnnotation annotation : modifiers.annotations) {
        Name annotationQualifiedName = getSymbol(annotation).getQualifiedName();
        if (annotationQualifiedName.contentEquals(PROVIDES_CLASS_NAME) || annotationQualifiedName.contentEquals(PRODUCES_CLASS_NAME)) {
            List<JCExpression> arguments = annotation.getArguments();
            if (!arguments.isEmpty()) {
                JCExpression argument = Iterables.getOnlyElement(arguments);
                checkState(argument.getKind().equals(ASSIGNMENT));
                JCAssign assignment = (JCAssign) argument;
                checkState(getSymbol(assignment.getVariable()).getSimpleName().contentEquals("type"));
                String typeName = getSymbol(assignment.getExpression()).getSimpleName().toString();
                switch(typeName) {
                    case "SET":
                        modifierStringsBuilder.add("@IntoSet");
                        fix.addImport(INTO_SET_CLASS_NAME);
                        break;
                    case "SET_VALUES":
                        modifierStringsBuilder.add("@ElementsIntoSet");
                        fix.addImport(ELEMENTS_INTO_SET_CLASS_NAME);
                        break;
                    case "MAP":
                        modifierStringsBuilder.add("@IntoMap");
                        fix.addImport(INTO_MAP_CLASS_NAME);
                        break;
                    default:
                        throw new AssertionError("Unknown type name: " + typeName);
                }
            }
        } else {
            modifierStringsBuilder.add(state.getSourceForNode(annotation));
        }
    }
    EnumSet<Flag> methodFlags = Flags.asFlagSet(modifiers.flags);
    methodFlags.remove(Flags.Flag.STATIC);
    methodFlags.remove(Flags.Flag.FINAL);
    methodFlags.add(Flags.Flag.ABSTRACT);
    for (Flag flag : methodFlags) {
        modifierStringsBuilder.add(flag.toString());
    }
    fix.replace(modifiers, Joiner.on(' ').join(modifierStringsBuilder.build()));
    fix.replace(method.getBody(), ";");
    return fix;
}
Also used : JCMethodDecl(com.sun.tools.javac.tree.JCTree.JCMethodDecl) JCAssign(com.sun.tools.javac.tree.JCTree.JCAssign) ImmutableList(com.google.common.collect.ImmutableList) Flag(com.sun.tools.javac.code.Flags.Flag) Name(com.sun.tools.javac.util.Name) JCExpression(com.sun.tools.javac.tree.JCTree.JCExpression) SuggestedFix(com.google.errorprone.fixes.SuggestedFix) JCModifiers(com.sun.tools.javac.tree.JCTree.JCModifiers) JCAnnotation(com.sun.tools.javac.tree.JCTree.JCAnnotation)

Aggregations

ImmutableList (com.google.common.collect.ImmutableList)3 Flag (com.sun.tools.javac.code.Flags.Flag)3 JCAnnotation (com.sun.tools.javac.tree.JCTree.JCAnnotation)3 Name (com.sun.tools.javac.util.Name)2 SuggestedFix (com.google.errorprone.fixes.SuggestedFix)1 JCAssign (com.sun.tools.javac.tree.JCTree.JCAssign)1 JCExpression (com.sun.tools.javac.tree.JCTree.JCExpression)1 JCMethodDecl (com.sun.tools.javac.tree.JCTree.JCMethodDecl)1 JCModifiers (com.sun.tools.javac.tree.JCTree.JCModifiers)1