From b277ae88b653f039b576717f8d9ecd56e5dbd2fe Mon Sep 17 00:00:00 2001 From: Toine Hartman Date: Wed, 19 Aug 2026 11:29:09 +0200 Subject: [PATCH 1/2] Reapply "Merge branch 'main' into fix/logicallocs-in-compiler" This reverts commit 3d5369b35a00bddc085d722010baf329580b1c68. --- .git-blame-ignore-revs | 8 +- .settings/org.eclipse.core.resources.prefs | 1 + pom.xml | 9 +- .../agrammar/definition/Symbols.rsc | 10 ++ .../lang/rascalcore/check/ATypeUtils.rsc | 21 ++- .../lang/rascalcore/check/Checker.rsc | 2 +- .../check/CollectDataDeclaration.rsc | 8 +- .../rascalcore/check/CollectDeclaration.rsc | 16 +-- .../lang/rascalcore/check/CollectLiteral.rsc | 2 +- .../rascalcore/check/CollectOperators.rsc | 2 +- .../lang/rascalcore/check/CollectPattern.rsc | 20 +-- .../rascalcore/check/CollectStatement.rsc | 26 ++-- .../check/CollectSyntaxDeclaration.rsc | 4 +- .../lang/rascalcore/check/CollectType.rsc | 8 +- .../compiler/lang/rascalcore/check/Import.rsc | 4 +- .../check/tests/StaticTestingUtils.rsc | 4 +- .../rascalcore/check/tests/UseDefTests.rsc | 6 + .../lang/rascalcore/compile/Examples/A.rsc | 6 +- .../rascalmpl/library/util/Reflective.java | 3 + .../rascalmpl/uri/URIResolverRegistry.java | 7 +- src/org/rascalmpl/uri/URIUtil.java | 4 - src/org/rascalmpl/uri/resolvers.config | 2 + .../uri/unsupported/LibraryURIResolver.java | 7 + .../uri/unsupported/UnknownURIResolver.java | 9 ++ .../unsupported/UnsupportedURIResolver.java | 125 ++++++++++++++++++ .../rascalmpl/test/repl/JlineParserTest.java | 2 +- 26 files changed, 246 insertions(+), 70 deletions(-) create mode 100644 src/org/rascalmpl/uri/unsupported/LibraryURIResolver.java create mode 100644 src/org/rascalmpl/uri/unsupported/UnknownURIResolver.java create mode 100644 src/org/rascalmpl/uri/unsupported/UnsupportedURIResolver.java diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 933e3bb46e1..64c543262bf 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -4,9 +4,9 @@ # git config blame.ignoreRevsFile .git-blame-ignore-revs # indent fix for JSON -31b1031ade5d84f9c60e30d17da3b55e78d291fb +f5d0490e283e36e527821736b11f9b09163b67b6 # fixing tabs & spaces mixed -0d048e15683740b5c944be5333ec0680df825e47 -23ec4b622bbe503ef013be5a458e45ae6fd89b97 -200b0352084be9435c64aa60c550edd24a59131b +1b9801104c0e839e229c25f6a16b72a48e874594 +97fc3b0739f848c8277f2b2c2aae3530afff37a6 +a004c2604cef592975f60a572c4a03491b2f7971 diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 1d4bcb41c23..e16014115e1 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -5,6 +5,7 @@ encoding//src/org/rascalmpl/library/experiments/vis2/lib/nv.d3.css=UTF-8 encoding//src/org/rascalmpl/library/experiments/vis2/lib/nv.d3.js=UTF-8 encoding//src/org/rascalmpl/library/experiments/vis2/lib/reset.css=UTF-8 encoding//src/org/rascalmpl/library/lang/rascal/tests/functionality/DataType.rsc=UTF-8 +encoding//target/generated-resources=UTF-8 encoding//test/org/rascalmpl/test/data=UTF-8 encoding/=UTF-8 encoding/META-INF=UTF-8 diff --git a/pom.xml b/pom.xml index 8d6c46478bb..82073b97177 100644 --- a/pom.xml +++ b/pom.xml @@ -58,12 +58,9 @@ - . + META-INF + ${project.build.outputDirectory}/META-INF false - - META-INF/RASCAL.MF - rascal-DEPENDENCIES.txt - ${project.build.directory}/generated-resources @@ -288,7 +285,7 @@ package - rascal-DEPENDENCIES.txt + ${project.build.outputDirectory}/rascal-DEPENDENCIES.txt diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/agrammar/definition/Symbols.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/agrammar/definition/Symbols.rsc index a07a75ae2e3..ebd0d32a38c 100644 --- a/src/org/rascalmpl/compiler/lang/rascalcore/agrammar/definition/Symbols.rsc +++ b/src/org/rascalmpl/compiler/lang/rascalcore/agrammar/definition/Symbols.rsc @@ -133,6 +133,16 @@ public AType defsym2AType(Sym sym, SyntaxRole sr) { } } +public Tree defsym2IdTree(Sym sym) = top-down-break visit (sym) { + case lang::rascal::\syntax::Rascal::nonterminal(Nonterminal n): return n; + case \parametrized(Nonterminal n, _): return n; + case \start(Nonterminal n): return n; + default: { + iprintln(sym); + throw "defsym2IdTree, missed a case "; + } +}; + public list[AType] args2ATypes(Sym* args) { return [sym2AType(s) | Sym s <- args]; } diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeUtils.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeUtils.rsc index 4243ece11cc..697640d2347 100644 --- a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeUtils.rsc +++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeUtils.rsc @@ -71,6 +71,7 @@ str prettyAType(avalue()) = "value"; str prettyAType(aloc()) = "loc"; str prettyAType(adatetime()) = "datetime"; str prettyAType(alist(AType t)) = "list[]"; +str prettyAType(abag(AType t)) = "bag[]"; str prettyAType(aset(AType t)) = "set[]"; str prettyAType(atuple(AType ts)) = "tuple[]"; str prettyAType(amap(AType d, AType r)) = "map[, ]"; @@ -92,6 +93,7 @@ str prettyAType(t: acons(AType adt, /*str consName,*/ list[AType] fields, list[Keyword] kwFields)) = "::(" : "">" | ft <- fields])> =..." | Keyword kw <- kwFields])>)"; +str prettyAType(aprod(AProduction production)) = prettyAType(production); str prettyAType(amodule(str mname)) = "module "; str prettyAType(aparameter(str pn, AType t, closed=c)) = @@ -108,7 +110,12 @@ str prettyAType(Keyword kw: kwField(fieldType, fieldName, _,defaultExp)) = "
)"; //TODO others
+str prettyAType(\prod(AType s, list[AType] fs/*, SyntaxRole _*/)) = " : ";
+str prettyAType(regular(AType s)) = prettyAType(s);
+str prettyAType(priority(AType _s, list[AProduction] choices)) = " ", [ prettyAType(a) | a <- choices ])>";
+str prettyAType(associativity(AType _s, AAssociativity \assoc, set[AProduction] alternatives)) = " (  )";
+str prettyAType(reference(AType s, str cons)) = ":";
+str prettyAType(\achoice(AType s, set[AProduction] alternatives)) = "";
 
 // terminal symbols
 str prettyAType(alit(str string)) = string;
@@ -124,9 +131,9 @@ str prettyAType(\aempty()) = "()";
 str prettyAType(\opt(AType symbol)) = "?";
 str prettyAType(\iter(AType symbol)) = "+";
 str prettyAType(\iter-star(AType symbol)) = "*";
-str prettyAType(\iter-seps(AType symbol, list[AType] separators)) = "{ \"" | sep <- separators, !isLayoutAType(sep) ])>}+";
-str prettyAType(\iter-star-seps(AType symbol, list[AType] separators)) = "{ \"" | sep <- separators, !isLayoutAType(sep) ])>}*";
-str prettyAType(\alt(set[AType] alternatives)) = "(  )" when size(alternatives) > 1;
+str prettyAType(\iter-seps(AType symbol, list[AType] separators)) = size(seps) == 0 ? prettyAType(iter(symbol)) : "{ }+" when seps := [ "\"\"" | sep <- separators, !isLayoutAType(sep) ];
+str prettyAType(\iter-star-seps(AType symbol, list[AType] separators)) = size(seps) == 0 ? prettyAType(\iter-star(symbol)) :  "{ }*" when seps := [ "\"\"" | sep <- separators, !isLayoutAType(sep) ];
+str prettyAType(\alt(set[AType] alternatives)) = "(  )" when size(alternatives) > 0;
 str prettyAType(\seq(list[AType] sequence)) = "(  )" when size(sequence) > 1;
 str prettyAType(\conditional(AType symbol, set[ACondition] conditions)) = " {  }";
 default str prettyAType(AType s) = ""; //"";
@@ -141,6 +148,12 @@ private str prettyPrintCond("a-begin-of-line"()) = "^";
 private str prettyPrintCond("a-end-of-line"()) = "$";
 private str prettyPrintCond("a-except"(str label)) = "!