sireum / archived-v2-jawa

3 stars 5 forks source link

StringIndexOutOfBoundsException when calling RefactorJawa$.resolveCallStatement on interface methods #1

Open woodzltc opened 9 years ago

woodzltc commented 9 years ago

When creating a new argus project on the attached apk, the following error pops after pressing the finish button:

java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1955) at org.sireum.jawa.sjc.parser.LocationDefSymbol.location(JawaAstNode.scala:257) at org.sireum.jawa.sjc.parser.JawaParser$$anonfun$body0$1$$anonfun$1.apply(JawaParser.scala:304) at org.sireum.jawa.sjc.parser.JawaParser$$anonfun$body0$1$$anonfun$1.apply(JawaParser.scala:304) at scala.collection.LinearSeqOptimized$class.find(LinearSeqOptimized.scala:113) at scala.collection.immutable.List.find(List.scala:84) at org.sireum.jawa.sjc.parser.JawaParser$$anonfun$body0$1.apply(JawaParser.scala:304) at org.sireum.jawa.sjc.parser.JawaParser$$anonfun$body0$1.apply(JawaParser.scala:301) at scala.collection.immutable.List.foreach(List.scala:381) at org.sireum.jawa.sjc.parser.JawaParser.body0(JawaParser.scala:300) at org.sireum.jawa.sjc.parser.JawaParser.methodDeclaration0(JawaParser.scala:249) at org.sireum.jawa.sjc.parser.JawaParser.loop$5(JawaParser.scala:231) at org.sireum.jawa.sjc.parser.JawaParser.methodDeclarations(JawaParser.scala:237) at org.sireum.jawa.sjc.parser.JawaParser.classOrInterfaceDeclaration0(JawaParser.scala:59) at org.sireum.jawa.sjc.parser.JawaParser.loop$1(JawaParser.scala:34) at org.sireum.jawa.sjc.parser.JawaParser.compilationUnit(JawaParser.scala:39) at org.sireum.jawa.sjc.parser.JawaParser$.parse(JawaParser.scala:920) at org.sireum.jawa.sjc.parser.JawaParser$.parse(JawaParser.scala:911) at org.sireum.jawa.sjc.refactoring.RefactorJawa$.resolveCallStatement(RefactorJawa.scala:489) at org.sireum.jawa.sjc.refactoring.RefactorJawa$.apply(RefactorJawa.scala:25) at org.arguside.util.decompile.ApkDecompiler$$anonfun$removeSupportLibAndGen$2.apply(ApkDecompiler.scala:68) at org.arguside.util.decompile.ApkDecompiler$$anonfun$removeSupportLibAndGen$2.apply(ApkDecompiler.scala:66) at scala.collection.immutable.List.foreach(List.scala:381) at org.arguside.util.decompile.ApkDecompiler$.removeSupportLibAndGen(ApkDecompiler.scala:65) at org.arguside.util.decompile.ApkDecompiler$.decompile(ApkDecompiler.scala:24) at org.arguside.ui.internal.wizards.NewArgusProjectCreator$$anon$2.run(NewArgusProjectCreator.scala:220) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2295) at org.arguside.ui.internal.wizards.NewArgusProjectCreator$.create(NewArgusProjectCreator.scala:279) at org.arguside.ui.internal.wizards.NewArgusProjectWizard.performFinish(NewArgusProjectWizard.scala:65) at com.android.ide.eclipse.adt.internal.wizards.templates.TemplateWizard$1.run(TemplateWizard.java:201) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)

the relevant pilar file: /home/wuzhou/runtime-EclipseApplication/abc/src/com/google/ads/AppEventListener.pilar

woodzltc commented 9 years ago

The following interface/method might be relevant:

record com.google.ads.AppEventListener @kind interface @AccessFlag PUBLIC_INTERFACE_ABSTRACT { } procedure void com.google.ads.AppEventListener.onAppEvent (java.lang.String v1 @kind object, java.lang.String v2 @kind object) @owner ^com.google.ads.AppEventListener @signature Lcom/google/ads/AppEventListener;.onAppEvent:(Ljava/lang/String;Ljava/lang/String;)V @Access PUBLIC_ABSTRACT {

return;


   }