Skip to content

Commit 26cc3e2

Browse files
committed
Merge pull request #112 in G/truffle from ~CHRISTIAN.HUMER_ORACLE.COM/truffle:fix_dsl_for_eclipse_neon to master
* commit '9d6708adf9d1a57d32f15ecd5bf2063790d83244': Fix DSL JDT compiler support for Eclipse Neon.
2 parents 606e36f + 9d6708a commit 26cc3e2

File tree

1 file changed

+11
-8
lines changed
  • truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/compiler

1 file changed

+11
-8
lines changed

truffle/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/java/compiler/JDTCompiler.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class JDTCompiler extends AbstractCompiler {
4242

4343
public static boolean isValidElement(Element currentElement) {
4444
try {
45-
Class<?> elementClass = Class.forName("org.eclipse.jdt.internal.compiler.apt.model.ElementImpl");
45+
Class<?> elementClass = currentElement.getClass().getClassLoader().loadClass("org.eclipse.jdt.internal.compiler.apt.model.ElementImpl");
4646
return elementClass.isAssignableFrom(currentElement.getClass());
4747
} catch (ClassNotFoundException e) {
4848
return false;
@@ -145,8 +145,9 @@ private static List<Object> lookupDeclarationOrder(TypeElement type) {
145145
List<Object> declarationOrder;
146146
try {
147147
Object binding = field(type, "_binding");
148-
Class<?> sourceTypeBinding = Class.forName("org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding");
149-
Class<?> binaryTypeBinding = Class.forName("org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding");
148+
ClassLoader classLoader = binding.getClass().getClassLoader();
149+
Class<?> sourceTypeBinding = classLoader.loadClass("org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding");
150+
Class<?> binaryTypeBinding = classLoader.loadClass("org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding");
150151

151152
declarationOrder = null;
152153
if (sourceTypeBinding.isAssignableFrom(binding.getClass())) {
@@ -190,9 +191,10 @@ public int compare(Object o1, Object o2) {
190191
}
191192
});
192193

193-
Class<?> binaryMethod = Class.forName("org.eclipse.jdt.internal.compiler.env.IBinaryMethod");
194-
Class<?> binaryField = Class.forName("org.eclipse.jdt.internal.compiler.env.IBinaryField");
195-
Class<?> nestedType = Class.forName("org.eclipse.jdt.internal.compiler.env.IBinaryNestedType");
194+
ClassLoader classLoader = binding.getClass().getClassLoader();
195+
Class<?> binaryMethod = classLoader.loadClass("org.eclipse.jdt.internal.compiler.env.IBinaryMethod");
196+
Class<?> binaryField = classLoader.loadClass("org.eclipse.jdt.internal.compiler.env.IBinaryField");
197+
Class<?> nestedType = classLoader.loadClass("org.eclipse.jdt.internal.compiler.env.IBinaryNestedType");
196198

197199
List<Object> bindings = new ArrayList<>();
198200
for (Object sortedElement : sortedElements) {
@@ -304,8 +306,9 @@ private static char[] getSource(Element element) throws Exception {
304306
*/
305307

306308
Object binding = field(element, "_binding");
307-
Class<?> methodBindingClass = Class.forName("org.eclipse.jdt.internal.compiler.lookup.MethodBinding");
308-
Class<?> referenceBindingClass = Class.forName("org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding");
309+
ClassLoader classLoader = binding.getClass().getClassLoader();
310+
Class<?> methodBindingClass = classLoader.loadClass("org.eclipse.jdt.internal.compiler.lookup.MethodBinding");
311+
Class<?> referenceBindingClass = classLoader.loadClass("org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding");
309312

310313
char[] source = null;
311314
if (methodBindingClass.isAssignableFrom(binding.getClass())) {

0 commit comments

Comments
 (0)