Skip to content

Commit a69aab9

Browse files
committed
Let the processor handle RubyBaseNode in addition to RubyNode
1 parent 2687786 commit a69aab9

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/processor/java/org/truffleruby/processor/CoreModuleChecks.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,10 @@ static void checks(
3333
CoreMethod coreMethod,
3434
TypeElement klass,
3535
boolean hasZeroArgument) {
36-
3736
byte[] lowerArgs = null;
3837

3938
TypeElement klassIt = klass;
40-
while (true) {
39+
while (!coreModuleProcessor.isNodeBaseType(klassIt)) {
4140
for (Element el : klassIt.getEnclosedElements()) {
4241
if (!(el instanceof ExecutableElement)) {
4342
continue; // we are interested only in executable elements
@@ -65,11 +64,6 @@ static void checks(
6564
.getProcessingEnvironment()
6665
.getElementUtils()
6766
.getTypeElement(klassIt.getSuperclass().toString());
68-
if (coreModuleProcessor.getProcessingEnvironment().getTypeUtils().isSameType(
69-
klassIt.asType(),
70-
coreModuleProcessor.rubyNodeType)) {
71-
break;
72-
}
7367
}
7468

7569
if (lowerArgs == null) {

src/processor/java/org/truffleruby/processor/CoreModuleProcessor.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ ProcessingEnvironment getProcessingEnvironment() {
9595
TypeMirror virtualFrameType;
9696
TypeMirror objectType;
9797
TypeMirror rubyNodeType;
98+
TypeMirror rubyBaseNodeType;
9899

99100
@Override
100101
public SourceVersion getSupportedSourceVersion() {
@@ -115,6 +116,10 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
115116
.getElementUtils()
116117
.getTypeElement("org.truffleruby.language.RubyNode")
117118
.asType();
119+
rubyBaseNodeType = processingEnv
120+
.getElementUtils()
121+
.getTypeElement("org.truffleruby.language.RubyBaseNode")
122+
.asType();
118123

119124
if (!annotations.isEmpty()) {
120125
for (Element element : roundEnvironment.getElementsAnnotatedWith(CoreModule.class)) {
@@ -403,7 +408,7 @@ private List<String> getArgumentNamesFromSpecializations(TypeElement klass, bool
403408
List<VariableElement> argumentElements = new ArrayList<>();
404409

405410
TypeElement klassIt = klass;
406-
while (true) {
411+
while (!isNodeBaseType(klassIt)) {
407412
for (Element el : klassIt.getEnclosedElements()) {
408413
if (!(el instanceof ExecutableElement)) {
409414
continue; // we are interested only in executable elements
@@ -462,14 +467,16 @@ private List<String> getArgumentNamesFromSpecializations(TypeElement klass, bool
462467
}
463468

464469
klassIt = processingEnv.getElementUtils().getTypeElement(klassIt.getSuperclass().toString());
465-
if (processingEnv.getTypeUtils().isSameType(klassIt.asType(), rubyNodeType)) {
466-
break;
467-
}
468470
}
469471

470472
return argumentNames;
471473
}
472474

475+
public boolean isNodeBaseType(TypeElement typeElement) {
476+
return processingEnv.getTypeUtils().isSameType(typeElement.asType(), rubyNodeType) ||
477+
processingEnv.getTypeUtils().isSameType(typeElement.asType(), rubyBaseNodeType);
478+
}
479+
473480
private boolean anyCoreMethod(List<? extends Element> enclosedElements) {
474481
for (Element e : enclosedElements) {
475482
if (e instanceof TypeElement && e.getAnnotation(CoreMethod.class) != null) {

0 commit comments

Comments
 (0)