From 2a8882c7b37329d1d4394323968c6594e1147bdd Mon Sep 17 00:00:00 2001 From: Lukas Stadler <lukas.stadler@oracle.com> Date: Fri, 3 Nov 2017 12:05:36 +0100 Subject: [PATCH] don't convert parse exceptions to RErrors in non-interactive mode --- .../truffle/r/engine/TruffleRLanguageImpl.java | 10 +++++----- .../oracle/truffle/r/runtime/context/Engine.java | 13 ++++++++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java index 6efb2f21fc..55f25b4d20 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java @@ -53,8 +53,6 @@ import com.oracle.truffle.r.runtime.data.RPromise; import com.oracle.truffle.r.runtime.data.RTypedValue; import com.oracle.truffle.r.runtime.env.RScope; import com.oracle.truffle.r.runtime.ffi.RFFIFactory; -import com.oracle.truffle.r.runtime.interop.R2Foreign; -import com.oracle.truffle.r.runtime.interop.R2ForeignNodeGen; import com.oracle.truffle.r.runtime.nodes.RBaseNode; @TruffleLanguage.Registration(name = "R", id = "R", version = "3.3.2", mimeType = {RRuntime.R_APP_MIME, RRuntime.R_TEXT_MIME}, interactive = true) @@ -194,12 +192,14 @@ public final class TruffleRLanguageImpl extends TruffleRLanguage { } catch (IncompleteSourceException e) { throw e; } catch (ParseException e) { - throw e.throwAsRError(); + if (request.getSource().isInteractive()) { + throw e.throwAsRError(); + } else { + throw e; + } } } - private static final R2Foreign r2foreign = R2ForeignNodeGen.create(); - @Override protected Object getLanguageGlobal(RContext context) { // TODO: what's the meaning of "language global" for R? diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/Engine.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/Engine.java index 8ad26ae5a0..9e3592226f 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/Engine.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/Engine.java @@ -33,6 +33,7 @@ import com.oracle.truffle.api.TruffleException; import com.oracle.truffle.api.frame.MaterializedFrame; import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.source.Source; +import com.oracle.truffle.api.source.SourceSection; import com.oracle.truffle.api.vm.PolyglotEngine; import com.oracle.truffle.r.runtime.ArgumentsSignature; import com.oracle.truffle.r.runtime.RCaller; @@ -101,7 +102,17 @@ public interface Engine { @Override public Node getLocation() { - return null; + if (line <= 0 || line > source.getLineCount()) { + return null; + } else { + SourceSection section = source.createSection(line); + return new Node() { + @Override + public SourceSection getSourceSection() { + return section; + } + }; + } } @Override -- GitLab