diff --git a/src/org/rascalmpl/library/util/PathConfig.java b/src/org/rascalmpl/library/util/PathConfig.java index 9524d596468..92c0f990bbf 100644 --- a/src/org/rascalmpl/library/util/PathConfig.java +++ b/src/org/rascalmpl/library/util/PathConfig.java @@ -760,6 +760,9 @@ else if (projectName.equals("rascal-lsp")) { buildRascalLSPConfig(manifestRoot, mode, mavenClasspath, srcsWriter, libsWriter, messages); } else { + if (mavenClasspath.stream().filter(PathConfig::isRascal).findFirst().isEmpty()) { + messages.append(Messages.error("Dependency on 'org.rascalmpl:rascal' is required", getPomXmlLocation(manifestRoot))); + } buildNormalProjectConfig(manifestRoot, mode, mavenClasspath, isRoot, srcsWriter, libsWriter, messages); } } @@ -979,6 +982,19 @@ private static boolean messageStartsWith(IValue message, String prefix) { return ((IString) msg).getValue().startsWith(prefix); } + private static boolean isRascalMplGroup(ArtifactCoordinate coord) { + return "org.rascalmpl".equals(coord.getGroupId()); + } + + private static boolean isRascal(Artifact art) { + var coord = art.getCoordinate(); + return isRascalMplGroup(coord) && isRascal(coord.getArtifactId()); + } + + private static boolean isRascal(String projectName) { + return "rascal".equalsIgnoreCase(projectName); + } + private static boolean isTypePalArtifact(ArtifactCoordinate artifact) { return "org.rascalmpl".equals(artifact.getGroupId()) && "typepal".equals(artifact.getArtifactId());