Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug in pushdown String #236

Closed
7 tasks
yossigil opened this issue Sep 20, 2016 · 3 comments
Closed
7 tasks

Bug in pushdown String #236

yossigil opened this issue Sep 20, 2016 · 3 comments
Assignees

Comments

@yossigil
Copy link
Member

yossigil commented Sep 20, 2016

Uploading image.png…

This is a blocker since it holds the spartanization process. You know the drill:

  • Produce a test case to reproduce
  • Make the test fail
  • Fix the bug
  • Make sure the test pass
  • Cleanup
  • Make sure the plugin work at least on itself
  • Push

This is the dump I get, many times, the bad index is always -3 for some reason, but could be a coincidence:

java.lang.StringIndexOutOfBoundsException: String index out of range: -3
    at java.lang.String.substring(String.java:1967)
    at il.org.spartan.spartanizer.wrings.TernaryPusdownStrings.getPrefix(TernaryPusdownStrings.java:68)
    at il.org.spartan.spartanizer.wrings.TernaryPusdownStrings.replaceSuffix(TernaryPusdownStrings.java:127)
    at il.org.spartan.spartanizer.wrings.TernaryPusdownStrings.simplifyStrings(TernaryPusdownStrings.java:207)
    at il.org.spartan.spartanizer.wrings.TernaryPusdownStrings.simplify(TernaryPusdownStrings.java:137)
    at il.org.spartan.spartanizer.wrings.TernaryPusdownStrings.replacement(TernaryPusdownStrings.java:36)
    at il.org.spartan.spartanizer.wrings.TernaryPusdownStrings.replacement(TernaryPusdownStrings.java:218)
    at il.org.spartan.spartanizer.wrings.TernaryPusdownStrings.replacement(TernaryPusdownStrings.java:1)
    at il.org.spartan.spartanizer.wringing.ReplaceCurrentNode.suggest(ReplaceCurrentNode.java:19)
    at il.org.spartan.spartanizer.wringing.CarefulWring.canSuggest(CarefulWring.java:12)
    at il.org.spartan.spartanizer.wringing.CarefulWring.demandsToSuggestButPerhapsCant(CarefulWring.java:16)
    at il.org.spartan.spartanizer.dispatch.Toolbox.find(Toolbox.java:205)
    at il.org.spartan.spartanizer.dispatch.Toolbox.find(Toolbox.java:217)
    at il.org.spartan.spartanizer.dispatch.Trimmer$2.go(Trimmer.java:66)
    at il.org.spartan.spartanizer.dispatch.DispatchingVisitor.cautiousGo(DispatchingVisitor.java:119)
    at il.org.spartan.spartanizer.dispatch.DispatchingVisitor.visit(DispatchingVisitor.java:33)
    at org.eclipse.jdt.core.dom.ConditionalExpression.accept0(ConditionalExpression.java:187)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
    at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759)
    at org.eclipse.jdt.core.dom.ReturnStatement.accept0(ReturnStatement.java:137)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
    at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)
    at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
    at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759)
    at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:635)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
    at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)
    at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
    at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)
    at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
    at il.org.spartan.plugin.GUI$Applicator.collectSuggesions(GUI$Applicator.java:113)
    at il.org.spartan.plugin.Builder.addMarkers(Builder.java:77)
    at il.org.spartan.plugin.Builder.addMarkers(Builder.java:72)
    at il.org.spartan.plugin.Builder.addMarkers(Builder.java:56)
    at il.org.spartan.plugin.Builder.lambda$0(Builder.java:49)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:64)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:75)
    at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:48)
    at il.org.spartan.plugin.Builder.incrementalBuild(Builder.java:44)
    at il.org.spartan.plugin.Builder.build(Builder.java:113)
    at il.org.spartan.plugin.Builder.build(Builder.java:121)
    at il.org.spartan.plugin.Builder.build(Builder.java:91)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
@yossigil
Copy link
Member Author

My advise: avoid playing with indices. They tend to be buggy. Just use string functions. Write your own.

yossigil added a commit that referenced this issue Sep 20, 2016
yossigil added a commit that referenced this issue Sep 20, 2016
@NivShalmon
Copy link
Collaborator

I have a general idea of how this happens since it happened before, but I can't find a case where this happened. @yossigil do you have an example of code where this happened? It doesn't happen to me when I spartanize the plugin.
I updated the code to use az,iz and lisp better, as well as fixed some other bugs I found while trying to cause this. Maybe this will also solve this, though I'm sceptical

@yossigil
Copy link
Member Author

Seems to be done. If the problem persists, we will start an new issue and reference this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants