diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeBase.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeBase.rsc index 62e3fe12171..bda7c86441b 100644 --- a/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeBase.rsc +++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/ATypeBase.rsc @@ -39,6 +39,7 @@ extend lang::rascal::\syntax::Rascal; import List; import Set; //import Node; +import util::Memo; import String; data Keyword @@ -89,7 +90,7 @@ data AType (str alabel = "") | avalue() ; -@memo{expireAfter(minutes=5),maximumSize(1000)} +@memo={expireAfter(minutes=5),maximumSize(1000)} AType overloadedAType(rel[loc, IdRole, AType] overloads){ if(all( <- overloads, aadt(_, _, _) := t)){ str adtName = ""; diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/ModuleLocations.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/ModuleLocations.rsc index bf72bb487bd..228da061701 100644 --- a/src/org/rascalmpl/compiler/lang/rascalcore/check/ModuleLocations.rsc +++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/ModuleLocations.rsc @@ -35,6 +35,7 @@ import util::Reflective; import util::FileSystem; import lang::rascalcore::check::BasicRascalConfig; import lang::rascalcore::check::LogicalLocations; +import util::Memo; str makeFileName(str qualifiedModuleName, str extension = "rsc") { str qnameSlashes = replaceAll(qualifiedModuleName, "::", "/"); @@ -101,7 +102,7 @@ int commonPrefix(list[str] rdir, list[str] rm){ } return size(rm); } -@memo{expireAfter(minutes=5),maximumSize(500)} +@memo={expireAfter(minutes=5),maximumSize(500)} @synopsis{Find the module name corresponding to a given module location via its (src, tpl or logical) location} str getRascalModuleName(loc moduleLoc, PathConfig pcfg){ modulePath = moduleLoc.path; diff --git a/src/org/rascalmpl/compiler/lang/rascalcore/check/RascalConfig.rsc b/src/org/rascalmpl/compiler/lang/rascalcore/check/RascalConfig.rsc index e02a5287979..1fec2716c42 100644 --- a/src/org/rascalmpl/compiler/lang/rascalcore/check/RascalConfig.rsc +++ b/src/org/rascalmpl/compiler/lang/rascalcore/check/RascalConfig.rsc @@ -55,6 +55,7 @@ import Map; import Set; import Relation; import String; +import util::Memo; str parserPackage = "org.rascalmpl.core.library.lang.rascalcore.grammar.tests.generated_parsers"; @@ -136,7 +137,7 @@ bool rascalMayOverload(set[loc] defs, map[loc, Define] defines){ set[IdRole] defBeforeUseRoles = {variableId(), moduleVariableId(), formalId(), keywordFormalId(), patternVariableId()}; -@memo{expireAfter(minutes=5),maximumSize(1000)} +@memo={expireAfter(minutes=5),maximumSize(1000)} Accept rascalIsAcceptableSimple(loc def, Use use, Solver s){ //println("rascalIsAcceptableSimple: *** *** def=, use="); Define d = s.getDefine(def); @@ -577,7 +578,7 @@ loc rascalCreateLogicalLoc(Define def, str modelName, PathConfig pcfg){ return def.defined; } -@memo{expireAfter(minutes=5),maximumSize(1000)} +@memo={expireAfter(minutes=5),maximumSize(1000)} rel[str shortName, str longName] getRascalModuleNames(PathConfig pcfg){ longNames = {}; for(srcdir <- pcfg.srcs){ diff --git a/src/org/rascalmpl/interpreter/result/NamedFunction.java b/src/org/rascalmpl/interpreter/result/NamedFunction.java index 4323f410129..8e7d0a4ecc1 100644 --- a/src/org/rascalmpl/interpreter/result/NamedFunction.java +++ b/src/org/rascalmpl/interpreter/result/NamedFunction.java @@ -39,6 +39,7 @@ import io.usethesource.vallang.IConstructor; import io.usethesource.vallang.IInteger; import io.usethesource.vallang.ISet; +import io.usethesource.vallang.IString; import io.usethesource.vallang.IValue; import io.usethesource.vallang.type.Type; @@ -73,6 +74,11 @@ public NamedFunction(AbstractAST ast, IEvaluator> eval, Type func IValue memoTag = tags.get("memo"); if (memoTag != null) { this.hasMemoization = true; + if (memoTag instanceof IString) { + if (!((IString)memoTag).getValue().isBlank()) { + eval.warning("Ignored memo configuration " + memoTag + ", in most cases `@memo={..}` is needed instead of `@memo{..}`", ((FunctionDeclaration)ast).getTags().getLocation()); + } + } if (!(memoTag instanceof ISet)) { memoTag = vf.set(memoTag); } diff --git a/src/org/rascalmpl/library/lang/rascal/tests/basic/Memoization.rsc b/src/org/rascalmpl/library/lang/rascal/tests/basic/Memoization.rsc index e634d4f75f9..72d175b1cab 100644 --- a/src/org/rascalmpl/library/lang/rascal/tests/basic/Memoization.rsc +++ b/src/org/rascalmpl/library/lang/rascal/tests/basic/Memoization.rsc @@ -38,7 +38,7 @@ test bool memoCalledCorrectly2(set[value] x) { test bool memoExpire() { int callCount2 = 0; - @memo=maximumSize(10) + @memo={maximumSize(10)} int call2(int i) { callCount2 += 1; return callCount2;