diff --git a/k-distribution/tests/regression-new/macro_vars/macro-vars.k b/k-distribution/tests/regression-new/macro_vars/macro-vars.k index 3c91ed41224..05cabdb61bd 100644 --- a/k-distribution/tests/regression-new/macro_vars/macro-vars.k +++ b/k-distribution/tests/regression-new/macro_vars/macro-vars.k @@ -12,4 +12,8 @@ module MACRO-VARS syntax CPPType ::= underlyingType(CPPType) [function] syntax CPPType ::= "cppEnumType" rule cppEnumType => bar(_, scopedEnum() #Or unscopedEnum() ) [macro, unboundVariables(_)] -endmodule \ No newline at end of file + + syntax Int ::= "hookedMacro" [macro] + rule hookedMacro => 5 + +endmodule diff --git a/kernel/src/main/java/org/kframework/compile/checks/CheckAtt.java b/kernel/src/main/java/org/kframework/compile/checks/CheckAtt.java index e3e05eea334..fe622842415 100644 --- a/kernel/src/main/java/org/kframework/compile/checks/CheckAtt.java +++ b/kernel/src/main/java/org/kframework/compile/checks/CheckAtt.java @@ -51,7 +51,7 @@ private void check(Production prod) { Att sortAtt = m.sortAttributesFor().getOrElse(prod.sort().head(), () -> Att.empty()); if (sortAtt.contains(Att.HOOK()) && !sortAtt.get(Att.HOOK()).equals("ARRAY.Array") && !(sortAtt.get(Att.HOOK()).equals("KVAR.KVar") && isSymbolicKast)) { if (!prod.att().contains(Att.FUNCTION()) && !prod.att().contains(Att.BRACKET()) && - !prod.att().contains("token") && !(prod.klabel().isDefined() && macros.contains(prod.klabel().get()))) { + !prod.att().contains("token") && !prod.att().contains("macro") && !(prod.klabel().isDefined() && macros.contains(prod.klabel().get()))) { if (!(prod.sort().equals(Sorts.K()) && ((prod.klabel().isDefined() && (prod.klabel().get().name().equals("#EmptyK") || prod.klabel().get().name().equals("#KSequence"))) || prod.isSubsort()))) { if (!(sortAtt.contains("cellCollection") && prod.isSubsort())) { errors.add(KEMException.compilerError("Cannot add new constructors to hooked sort " + prod.sort(), prod));