@@ -494,6 +494,7 @@ static const keywordDesc KeywordTable [] = {
494494* FUNCTION PROTOTYPES
495495*/
496496static void createTags (const unsigned int nestLevel , statementInfo * const parent );
497+ static void parseAtMarkStyleAnnotation (statementInfo * const st );
497498
498499/*
499500* FUNCTION DEFINITIONS
@@ -2122,6 +2123,10 @@ static bool skipPostArgumentStuff (
21222123 break ;
21232124 }
21242125 }
2126+ else if (isInputLanguage (Lang_d ) && c == '@' )
2127+ {
2128+ parseAtMarkStyleAnnotation (st );
2129+ }
21252130 }
21262131 if (! end )
21272132 {
@@ -2213,7 +2218,7 @@ static void processAngleBracket (void)
22132218 }
22142219}
22152220
2216- static void parseJavaAnnotation (statementInfo * const st )
2221+ static void parseAtMarkStyleAnnotation (statementInfo * const st )
22172222{
22182223 /*
22192224 * @Override
@@ -2225,7 +2230,11 @@ static void parseJavaAnnotation (statementInfo *const st)
22252230 tokenInfo * const token = activeToken (st );
22262231
22272232 int c = skipToNonWhite ();
2228- readIdentifier (token , c );
2233+ if (cppIsident1 (c ))
2234+ readIdentifier (token , c );
2235+ else
2236+ cppUngetc (c ); // D allows: @ ( ArgumentList )
2237+
22292238 if (token -> keyword == KEYWORD_INTERFACE )
22302239 {
22312240 /* Oops. This was actually "@interface" defining a new annotation. */
@@ -2346,9 +2355,9 @@ static int parseParens (statementInfo *const st, parenInfo *const info)
23462355 break ;
23472356
23482357 default :
2349- if (c == '@' && isInputLanguage (Lang_java ))
2358+ if (c == '@' && ( isInputLanguage (Lang_d ) || isInputLanguage ( Lang_java ) ))
23502359 {
2351- parseJavaAnnotation (st );
2360+ parseAtMarkStyleAnnotation (st );
23522361 }
23532362 else if (cppIsident1 (c ))
23542363 {
@@ -2637,9 +2646,9 @@ static void parseGeneralToken (statementInfo *const st, const int c)
26372646 if (c2 != '=' )
26382647 cppUngetc (c2 );
26392648 }
2640- else if (c == '@' && isInputLanguage (Lang_java ))
2649+ else if (c == '@' && ( isInputLanguage (Lang_d ) || isInputLanguage ( Lang_java ) ))
26412650 {
2642- parseJavaAnnotation (st );
2651+ parseAtMarkStyleAnnotation (st );
26432652 }
26442653 else if (c == STRING_SYMBOL ) {
26452654 setToken (st , TOKEN_NONE );
0 commit comments