rewrite icon indicating copy to clipboard operation
rewrite copied to clipboard

Provided example not working

Open rishabhrishu opened this issue 5 years ago • 2 comments

I tried to run the provided example, but it gives me errors. My code-

import com.netflix.rewrite.ast.*;
import com.netflix.rewrite.parse.*;
import com.netflix.rewrite.refactor.*;

public class MainClass {
    public static void main(String[] args) {
        new MainClass().refactorMethodName();
    }
    public void refactorMethodName() {
        Parser parser = new OracleJdkParser(); 
        String a = "class A {{ B.foo(0); }}";
        String b = "class B { static void foo(int n) {} }";

        Tr.CompilationUnit cu = parser.parse(a, /* which depends on */ b);
        Refactor refactor = cu.refactor()
                .changeMethodName(cu.findMethodCalls("B foo(int)"), "bar");
        Tr.CompilationUnit fixed = refactor.fix();
    }
}

The Error I got is -

521 [main] WARN com.netflix.rewrite.parse.OracleJdkParser - Failed symbol entering or attribution
java.lang.NullPointerException
	at jdk.compiler/com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:340)
	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:529)
	at jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:286)
	at jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:301)
	at jdk.compiler/com.sun.tools.javac.comp.Enter.complete(Enter.java:576)
	at jdk.compiler/com.sun.tools.javac.comp.Enter.main(Enter.java:560)
	at com.netflix.rewrite.parse.OracleJdkParser.enterAll(OracleJdkParser.kt:122)
	at com.netflix.rewrite.parse.OracleJdkParser.parse(OracleJdkParser.kt:101)
	at com.netflix.rewrite.parse.AbstractParser.parse(Parser.kt:69)
	at com.netflix.rewrite.parse.Parser$DefaultImpls.parse(Parser.kt:58)
	at com.netflix.rewrite.parse.AbstractParser.parse(Parser.kt:65)
	at com.netflix.rewrite.parse.Parser$DefaultImpls.parse(Parser.kt:38)
	at com.netflix.rewrite.parse.AbstractParser.parse(Parser.kt:65)
	at com.netflix.rewrite.parse.Parser$DefaultImpls.parse(Parser.kt:35)
	at com.netflix.rewrite.parse.AbstractParser.parse(Parser.kt:65)
	at MainClass.refactorMethodName(MainClass.java:23)
	at MainClass.main(MainClass.java:15)
Exception in thread "main" java.lang.NoSuchMethodError: com.sun.tools.javac.tree.JCTree$JCCompilationUnit.getPackageName()Lcom/sun/tools/javac/tree/JCTree$JCExpression;
	at com.netflix.rewrite.parse.OracleJdkParserVisitor.visitCompilationUnit(OracleJdkParserVisitor.kt:304)
	at com.netflix.rewrite.parse.OracleJdkParserVisitor.visitCompilationUnit(OracleJdkParserVisitor.kt:40)
	at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:591)
	at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:82)
	at com.netflix.rewrite.parse.OracleJdkParser.parse(OracleJdkParser.kt:112)
	at com.netflix.rewrite.parse.AbstractParser.parse(Parser.kt:69)
	at com.netflix.rewrite.parse.Parser$DefaultImpls.parse(Parser.kt:58)
	at com.netflix.rewrite.parse.AbstractParser.parse(Parser.kt:65)
	at com.netflix.rewrite.parse.Parser$DefaultImpls.parse(Parser.kt:38)
	at com.netflix.rewrite.parse.AbstractParser.parse(Parser.kt:65)
	at com.netflix.rewrite.parse.Parser$DefaultImpls.parse(Parser.kt:35)
	at com.netflix.rewrite.parse.AbstractParser.parse(Parser.kt:65)
	at MainClass.refactorMethodName(MainClass.java:23)
	at MainClass.main(MainClass.java:15)

My gradle script contains following dependencies-

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'com.netflix.devinsight.rewrite:rewrite-core:1.2.0'
    compile 'com.netflix.devinsight.rewrite:rewrite-core:0.18.4:jdkbundle'
    compile "org.slf4j:slf4j-api:1.6.1"
    compile "org.slf4j:slf4j-simple:1.6.1"
}

rishabhrishu avatar Mar 26 '19 06:03 rishabhrishu