Skip to content

Commit

Permalink
adapt patch from Matthew Farwell
Browse files Browse the repository at this point in the history
Fix #2785 ArrayIndexOutOfBoundsException in ASTConverter.isPrimitiveType
  • Loading branch information
davidB committed Nov 26, 2010
1 parent bb1da3c commit 8cab00e
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 1 deletion.
3 changes: 2 additions & 1 deletion org.scala-ide.sdt.aspects/META-INF/MANIFEST.MF
Expand Up @@ -20,7 +20,8 @@ Require-Bundle:
org.eclipse.ui.editors,
org.eclipse.ui.ide,
org.eclipse.ui.workbench.texteditor,
org.eclipse.jdt.debug.ui
org.eclipse.jdt.debug.ui,
org.aspectj.runtime
Eclipse-SupplementBundle:
org.eclipse.debug.core,
org.eclipse.jdt.core,
Expand Down
1 change: 1 addition & 0 deletions org.scala-ide.sdt.aspects/META-INF/aop.xml
@@ -1,5 +1,6 @@
<aspectj>
<aspects>
<aspect name="org.eclipse.jdt.core.dom.ASTConverterAspect"/>
<aspect name="scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilderAspect"/>
<aspect name="scala.tools.eclipse.contribution.weaving.jdt.cfprovider.ClassFileProviderAspect"/>
<aspect name="scala.tools.eclipse.contribution.weaving.jdt.core.BindingKeyAspect"/>
Expand Down
@@ -0,0 +1,104 @@
/**
*
*/
//package scala.tools.eclipse.contribution.weaving.jdt.core;
package org.eclipse.jdt.core.dom;

/**
* This class is the package org.eclipse.jdt.core.dom, because ASTConverter is not public.
*
* @author Matthew Farwell
*
*/
@SuppressWarnings("restriction")
public privileged aspect ASTConverterAspect {

pointcut isPrimitiveType(ASTConverter converter, char[] name) :
execution(boolean ASTConverter.isPrimitiveType(char[])) &&
args(name) &&
target(converter)
;

boolean around(ASTConverter converter, char[] name) :
isPrimitiveType(converter, name) {
System.err.println("aspects are go! name=" + name);
if (name == null || name.length == 0) {
return false;
}

switch(name[0]) {
case 'i' :
if (name.length == 3 && name[1] == 'n' && name[2] == 't') {
return true;
}
return false;
case 'l' :
if (name.length == 4 && name[1] == 'o' && name[2] == 'n' && name[3] == 'g') {
return true;
}
return false;
case 'd' :
if (name.length == 6
&& name[1] == 'o'
&& name[2] == 'u'
&& name[3] == 'b'
&& name[4] == 'l'
&& name[5] == 'e') {
return true;
}
return false;
case 'f' :
if (name.length == 5
&& name[1] == 'l'
&& name[2] == 'o'
&& name[3] == 'a'
&& name[4] == 't') {
return true;
}
return false;
case 'b' :
if (name.length == 4
&& name[1] == 'y'
&& name[2] == 't'
&& name[3] == 'e') {
return true;
} else
if (name.length == 7
&& name[1] == 'o'
&& name[2] == 'o'
&& name[3] == 'l'
&& name[4] == 'e'
&& name[5] == 'a'
&& name[6] == 'n') {
return true;
}
return false;
case 'c' :
if (name.length == 4
&& name[1] == 'h'
&& name[2] == 'a'
&& name[3] == 'r') {
return true;
}
return false;
case 's' :
if (name.length == 5
&& name[1] == 'h'
&& name[2] == 'o'
&& name[3] == 'r'
&& name[4] == 't') {
return true;
}
return false;
case 'v' :
if (name.length == 4
&& name[1] == 'o'
&& name[2] == 'i'
&& name[3] == 'd') {
return true;
}
return false;
}
return false;
}
}

0 comments on commit 8cab00e

Please sign in to comment.