diff --git a/ChangeLog b/ChangeLog
index 0cfa4cea9a3df9b53a2f32962f03f0b3ac0060e0..102ccef80de9a5663a16534c708b2ddf4ee4e934 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@
     for each AST class.
     * NTAs declared in the abstract grammar will now always be cached,
     just like attribute-only NTAs.
+    * Allow user annotations on aspect constructor declarations.
 
 2016-10-24  Jesper Öqvist <jesper.oqvist@cs.lth.se>
 
diff --git a/src/javacc/jrag/Jrag.jjt b/src/javacc/jrag/Jrag.jjt
index 78b86a254eb24acc125ba4e6e2e532f3bfebb20b..edac6c73c5c63f5bbe89362d7434cf7683128e15 100644
--- a/src/javacc/jrag/Jrag.jjt
+++ b/src/javacc/jrag/Jrag.jjt
@@ -654,7 +654,7 @@ void AspectBodyDeclaration() :
   LOOKAHEAD( AspectMethodDeclarationLookahead() )
   AspectMethodDeclaration()
 |
-  LOOKAHEAD( [ "public" | "protected" | "private" ] <IDENTIFIER> "." <IDENTIFIER> "(" )
+  LOOKAHEAD( Modifiers() <IDENTIFIER> "." <IDENTIFIER> "(" )
   AspectConstructorDeclaration()
 |
   LOOKAHEAD( AspectFieldDeclarationLookahead() )
@@ -973,7 +973,7 @@ void AspectRefineMethodDeclaration() :
 void AspectConstructorDeclaration() :
 {Token t;}
 {
-  [ "public" | "protected" | "private" ]
+  Modifiers()
   t = <IDENTIFIER> "." { className = t.image; } <IDENTIFIER> FormalParameters() [ "throws" NameList() ]
   "{"
     [ LOOKAHEAD(ExplicitConstructorInvocation()) ExplicitConstructorInvocation() ]