From 5b6d09ee55e41ab8db49840b1626402415684fee Mon Sep 17 00:00:00 2001 From: Toine Hartman Date: Mon, 17 Aug 2026 14:12:54 +0200 Subject: [PATCH 1/3] Unify path config-based classpath computations. --- src/org/rascalmpl/library/util/PathConfig.java | 8 ++++++++ src/org/rascalmpl/shell/ShellEvaluatorFactory.java | 5 +---- .../lang/rascal/tutor/repl/TutorCommandExecutor.java | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/org/rascalmpl/library/util/PathConfig.java b/src/org/rascalmpl/library/util/PathConfig.java index f5be93d1cab..da71751a54c 100644 --- a/src/org/rascalmpl/library/util/PathConfig.java +++ b/src/org/rascalmpl/library/util/PathConfig.java @@ -968,6 +968,14 @@ private static List getPomXmlCompilerClasspath(ISourceLocation manifes } } + public List getClasspath() { + var isRascal = projectRoot != null && new RascalManifest().getProjectName(projectRoot).equals("rascal"); + var libs = isRascal ? getLibs() : getLibsAndTarget(); + return libs.stream() + .map(ISourceLocation.class::cast) + .collect(Collectors.toList()); + } + private static boolean messageStartsWith(IValue message, String prefix) { if (!(message instanceof IConstructor)) { return false; diff --git a/src/org/rascalmpl/shell/ShellEvaluatorFactory.java b/src/org/rascalmpl/shell/ShellEvaluatorFactory.java index 43609761586..8d08e6b5597 100644 --- a/src/org/rascalmpl/shell/ShellEvaluatorFactory.java +++ b/src/org/rascalmpl/shell/ShellEvaluatorFactory.java @@ -64,14 +64,11 @@ private static Evaluator getDefaultEvaluatorForPathConfig(ISourceLocation projec evaluator.addRascalSearchPath((ISourceLocation) srcPath); } - var isRascal = projectRoot != null && new RascalManifest().getProjectName(projectRoot).equals("rascal"); - for (var lib : pcfg.getLibs()) { evaluator.addRascalSearchPath((ISourceLocation) lib); } - var libs = isRascal ? pcfg.getLibs() : pcfg.getLibsAndTarget(); - evaluator.addClassLoader(new SourceLocationClassLoader(libs, ClassLoader.getSystemClassLoader())); + evaluator.addClassLoader(new SourceLocationClassLoader(pcfg.getClasspath(), ClassLoader.getSystemClassLoader())); return evaluator; } diff --git a/src/org/rascalmpl/tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java b/src/org/rascalmpl/tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java index 71ccdbd79f6..4011d559820 100644 --- a/src/org/rascalmpl/tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java +++ b/src/org/rascalmpl/tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java @@ -72,7 +72,7 @@ protected Evaluator buildEvaluator(Reader input, PrintWriter stdout, PrintWriter eval.addRascalSearchPath((ISourceLocation) path); } - ClassLoader cl = new SourceLocationClassLoader(pcfg.getLibsAndTarget(), ShellEvaluatorFactory.class.getClassLoader()); + ClassLoader cl = new SourceLocationClassLoader(pcfg.getClasspath(), ShellEvaluatorFactory.class.getClassLoader()); eval.addClassLoader(cl); } else { From 68d9dedf180880c2e62c5f6ede430ff6eab07a7b Mon Sep 17 00:00:00 2001 From: Toine Hartman Date: Mon, 17 Aug 2026 14:55:56 +0200 Subject: [PATCH 2/3] Revert tutor classpath change. --- .../tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/rascalmpl/tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java b/src/org/rascalmpl/tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java index 4011d559820..71ccdbd79f6 100644 --- a/src/org/rascalmpl/tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java +++ b/src/org/rascalmpl/tutor/lang/rascal/tutor/repl/TutorCommandExecutor.java @@ -72,7 +72,7 @@ protected Evaluator buildEvaluator(Reader input, PrintWriter stdout, PrintWriter eval.addRascalSearchPath((ISourceLocation) path); } - ClassLoader cl = new SourceLocationClassLoader(pcfg.getClasspath(), ShellEvaluatorFactory.class.getClassLoader()); + ClassLoader cl = new SourceLocationClassLoader(pcfg.getLibsAndTarget(), ShellEvaluatorFactory.class.getClassLoader()); eval.addClassLoader(cl); } else { From 40364f8486e258ded9adea086b584543f41626f6 Mon Sep 17 00:00:00 2001 From: Toine Hartman Date: Tue, 18 Aug 2026 09:38:46 +0200 Subject: [PATCH 3/3] Move function to evaluator factory. --- src/org/rascalmpl/library/util/PathConfig.java | 8 -------- src/org/rascalmpl/shell/ShellEvaluatorFactory.java | 13 ++++++++++++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/org/rascalmpl/library/util/PathConfig.java b/src/org/rascalmpl/library/util/PathConfig.java index da71751a54c..f5be93d1cab 100644 --- a/src/org/rascalmpl/library/util/PathConfig.java +++ b/src/org/rascalmpl/library/util/PathConfig.java @@ -968,14 +968,6 @@ private static List getPomXmlCompilerClasspath(ISourceLocation manifes } } - public List getClasspath() { - var isRascal = projectRoot != null && new RascalManifest().getProjectName(projectRoot).equals("rascal"); - var libs = isRascal ? getLibs() : getLibsAndTarget(); - return libs.stream() - .map(ISourceLocation.class::cast) - .collect(Collectors.toList()); - } - private static boolean messageStartsWith(IValue message, String prefix) { if (!(message instanceof IConstructor)) { return false; diff --git a/src/org/rascalmpl/shell/ShellEvaluatorFactory.java b/src/org/rascalmpl/shell/ShellEvaluatorFactory.java index 8d08e6b5597..d96b5c3637d 100644 --- a/src/org/rascalmpl/shell/ShellEvaluatorFactory.java +++ b/src/org/rascalmpl/shell/ShellEvaluatorFactory.java @@ -2,7 +2,9 @@ import java.io.PrintWriter; import java.io.Reader; +import java.util.List; import java.util.function.Function; +import java.util.stream.Collectors; import org.rascalmpl.debug.IRascalMonitor; import org.rascalmpl.ideservices.IDEServices; @@ -68,7 +70,7 @@ private static Evaluator getDefaultEvaluatorForPathConfig(ISourceLocation projec evaluator.addRascalSearchPath((ISourceLocation) lib); } - evaluator.addClassLoader(new SourceLocationClassLoader(pcfg.getClasspath(), ClassLoader.getSystemClassLoader())); + evaluator.addClassLoader(new SourceLocationClassLoader(getClasspath(pcfg), ClassLoader.getSystemClassLoader())); return evaluator; } @@ -116,4 +118,13 @@ private static void registerProjectAndTargetResolver(Function getClasspath(PathConfig pcfg) { + var projectRoot = pcfg.getProjectRoot(); + var isRascal = projectRoot != null && new RascalManifest().getProjectName(projectRoot).equals("rascal"); + var libs = isRascal ? pcfg.getLibs() : pcfg.getLibsAndTarget(); + return libs.stream() + .map(ISourceLocation.class::cast) + .collect(Collectors.toList()); + } + }