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 6efb2f21fcbeb19adc84872036036613d9b3d2dc..55f25b4d20dc7807d9684c2ad7d79692e7921051 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 8ad26ae5a0872114391b191edec01b2bc93c85cf..9e3592226f4a4f6c9ac04e2f9400b9661dd9da7b 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