Skip to content

Commit 409d2cf

Browse files
committed
Fail in a non-fatal way in parse_with_yarp_and_dump_truffle_ast for not-yet-handled nodes
1 parent bfb9c6d commit 409d2cf

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/main/java/org/truffleruby/debug/TruffleDebugNodes.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
import org.truffleruby.language.arguments.RubyArguments;
7878
import org.truffleruby.language.backtrace.BacktraceFormatter;
7979
import org.truffleruby.language.backtrace.InternalRootNode;
80+
import org.truffleruby.language.control.RaiseException;
8081
import org.truffleruby.language.library.RubyStringLibrary;
8182
import org.truffleruby.language.methods.DeclarationContext;
8283
import org.truffleruby.language.methods.InternalMethod;
@@ -1468,7 +1469,16 @@ Object parseAndDump(Object code, Object focusedNodeClassName, int index,
14681469
@Cached RubyStringLibrary strings,
14691470
@Cached TruffleString.FromJavaStringNode fromJavaStringNode) {
14701471
String nodeClassNameString = RubyGuards.getJavaString(focusedNodeClassName);
1471-
RubyRootNode rootNode = parse(code);
1472+
RubyRootNode rootNode;
1473+
try {
1474+
rootNode = parse(code);
1475+
} catch (Error e) {
1476+
if (e.getMessage().contains("does not know how to translate")) {
1477+
throw new RaiseException(getContext(), coreExceptions().runtimeError(e.getMessage(), this));
1478+
} else {
1479+
throw e;
1480+
}
1481+
}
14721482
String output = TruffleASTPrinter.dump(rootNode, nodeClassNameString, index);
14731483
return createString(fromJavaStringNode, output, Encodings.UTF_8);
14741484
}

0 commit comments

Comments
 (0)