On Tue, Oct 23, 2012 at 4:38 PM, Michael Han <[email protected]> wrote: > Hi Eli, > >> But something has already gone wrong if in "[[foo]] int [[foo]] x;", both >> attributes end up in the same attribute list. > > I think attributes that appear before declaration specifier will be taken and > merged in the attribute list of the declaration specifier when declaration > specifier is parsed; that's why it seems to me using source location is the > only way to tell if an attribute is part of declaration specifier, or taken > from somewhere else. Do you think this is a bug in parser that should be > fixed? Maybe, in case of "[[foo]] int [[foo]] x", there should be two > attribute list one associated with declaration specifier and the other > associated with the declarator id?
I think the key point here is that whether we should attempt to apply an attribute to a declaration or to a type is purely syntactic, and therefore should be handled by the parser. If we're trying to apply the attribute to the decl in "int [[carries_dependency]] x;", we've already lost. Also, your "float also_correct(int x [[carries_dependency]]) [[carries_dependency]];" testcase is in fact not valid per the standard; an attribute specified after the parameter list of a function applies to the function type, not the declaration. The correct way to write it is "float also_correct [[carries_dependency]] (int x [[carries_dependency]]) ;". >> I don't understand why you're special-casing AT_CarriesDependency. > This attribute can't be applied to types so I am emitting an error message > that is different than default error message (unknown attributes ignored); > thus I am special casing it. My understanding is in general any type > attributes that can be handled (either applying it to types, or emitting > customized error message) should be special cased. There isn't any reason to special-case every declaration attribute with a different diagnostic about how it doesn't apply to types, is there? -Eli _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
