@@ -8,7 +8,7 @@ module CPP-TRANSLATION-DECL-DECLARATOR-SYNTAX
88 imports CPP-SORTS
99 imports CPP-TYPING-SORTS
1010
11- syntax Decl ::= DeclaratorAndSpecifiers(Declarator , Set)
11+ syntax Decl ::= DeclaratorAndSpecifiers(Decl , Set)
1212 | declareObject(NNSVal, NNSVal, CId, CId, CPPType, Init, DeclarationType, Linkage, Duration, Set)
1313 | defineObject(NNSVal, CId, CId, CPPType, Init, DeclarationType, Set)
1414 | initializeObject(NNSVal, CId, CPPType, init: KItem, DeclarationType) [strict(c; 4)]
@@ -53,18 +53,18 @@ module CPP-TRANSLATION-DECL-DECLARATOR
5353 imports CPP-TRANSLATION-CONSTANT-SYNTAX
5454 imports CPP-TRANSLATION-DECL-CLASS-DESTRUCTOR
5555
56- rule FunctionDecl(N::NNSVal , X::CId, Mangled::CId, T::CPPType , Params::List)
56+ rule FunctionDecl(N::NNS , X::CId, Mangled::CId, T::AType , Params::List)
5757 => NormalizedDecl(N, X, Mangled, T, NoInit(), Function(Params)) [anywhere]
5858
59- rule VarDecl(N::NNSVal , X::CId, Mangled::CId, T::CPPType , Init::Init, IsDirect:Bool)
59+ rule VarDecl(N::NNS , X::CId, Mangled::CId, T::AType , Init::Init, IsDirect:Bool)
6060 => NormalizedDecl(N, X, Mangled, T, Init, Var(#if IsDirect #then DirectInit() #else CopyInit() #fi)) [anywhere]
6161
62- rule FunctionDefinition(N::NNSVal , X::CId, Mangled::CId, T::CPPType , Params::List, Body::Stmt)
62+ rule FunctionDefinition(N::NNS , X::CId, Mangled::CId, T::AType , Params::List, Body::Stmt)
6363 => NormalizedDecl(N, X, Mangled, T, Body, Function(Params)) [anywhere]
6464
6565 rule DeclStmt(L::List) => listToK(L)
6666
67- rule Specifier(S::Specifier, D:Declarator ) => DeclaratorAndSpecifiers(D, SetItem(S))
67+ rule Specifier(S::Specifier, D::Decl ) => DeclaratorAndSpecifiers(D, SetItem(S))
6868 requires S =/=K Auto() [anywhere]
6969
7070 // Auto is a type specifier in C++ so it is handled elsewhere by AutoType
@@ -151,8 +151,6 @@ module CPP-TRANSLATION-DECL-DECLARATOR
151151 rule getClassLinkage(_:LocalQualifier :: _) => NoLinkage
152152
153153 // @ref n4296 3.5:4
154- rule getNamespaceLinkage(N:UnnamedNamespace) => InternalLinkage
155-
156154 rule getNamespaceLinkage(GlobalNamespace()) => ExternalLinkage
157155
158156 rule getNamespaceLinkage(Parent::Namespace :: _) => getNamespaceLinkage(Parent) [owise]
@@ -418,7 +416,7 @@ module CPP-TRANSLATION-DECL-DECLARATOR
418416
419417 syntax CPPType ::= completeDeclaration(CPPType, Init) [function]
420418
421- rule completeDeclaration(T::CPPType, (ExprLoc (_, I::Init) => I))
419+ rule completeDeclaration(T::CPPType, (InitLoc (_, I::Init) => I))
422420
423421 // @ref n4296 8.5.4:3.2 (char x[] = {"foo"})
424422 rule completeDeclaration(t(Q::Quals, Mods::Set, incompleteArrayType(t(Q'::Quals, Mods'::Set, T:CPPSimpleCharType))), BraceInit(ListItem(StringLiteral(Narrow::CharKind, S::String)))) => t(Q, Mods, arrayType(t(Q', Mods', T), lengthString(S) +Int 1))
@@ -790,9 +788,12 @@ module CPP-TRANSLATION-DECL-DECLARATOR
790788 rule stripInitHolds(V::Val) => V
791789 requires isEvalVal(V)
792790
793- context defArgs(_, (HOLE:StrictList => types(HOLE)), _)
791+ context defArgs(_, (HOLE::StrictList => types(HOLE)), _)
792+
793+ context defArgs(_, _, (HOLE::StrictList => cats(HOLE)))
794794
795- context defArgs(_, _, (HOLE:StrictList => cats(HOLE)))
795+ rule defArgs(A:StrictListResult, B:StrictListResult, C:StrictListResult)
796+ => defArgsResult(A, B, C)
796797
797798 syntax DefaultArguments ::= computeDefaultArgs(CPPType, DeclarationType)
798799
@@ -841,7 +842,7 @@ module CPP-TRANSLATION-DECL-DECLARATOR
841842 rule #makeFunctionDeclarationType(_, .List) => .List
842843
843844 rule emptyDefaultArguments(t(... st: functionType(...)) #as T::CPPType)
844- => #emptyDefaultArguments(#if hasImplicitParameter(T) #then size(getRealParams(T)) -Int 1 #else size(getRealParams(T)) #fi, defArgs (krlist(.List), krlist(.List), krlist(.List)))
845+ => #emptyDefaultArguments(#if hasImplicitParameter(T) #then size(getRealParams(T)) -Int 1 #else size(getRealParams(T)) #fi, defArgsResult (krlist(.List), krlist(.List), krlist(.List)))
845846
846847 rule emptyDefaultArguments(_) => NoDefArgs() [owise]
847848
@@ -850,7 +851,7 @@ module CPP-TRANSLATION-DECL-DECLARATOR
850851 rule #emptyDefaultArguments(0, DA::DefaultArgumentsResult) => DA
851852
852853 rule #emptyDefaultArguments(N::Int => N -Int 1,
853- defArgs (krlist(_::List (.List => ListItem(NoArg()))),
854+ defArgsResult (krlist(_::List (.List => ListItem(NoArg()))),
854855 krlist(_::List (.List => ListItem(NoInitType()))),
855856 krlist(_::List (.List => ListItem(NoInitCat()))))) [owise]
856857endmodule
0 commit comments