aaron.ballman added inline comments.

================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:5350
+
+  D->addAttr(::new (S.Context)
+                 NSErrorDomainAttr(S.Context, AL, IdentLoc->Ident));
----------------
MForster wrote:
> aaron.ballman wrote:
> > Shouldn't we also be validating that what we found is an NSString that has 
> > the correct properties? (That doesn't seem like it should be a change which 
> > risks breaking code based on what I understood from Doug's description.)
> > Shouldn't we also be validating that what we found is an NSString that has 
> > the correct properties?
> 
> Is your suggestion to string-compare the name of the type?
>>Shouldn't we also be validating that what we found is an NSString that has 
>>the correct properties?
> Is your suggestion to string-compare the name of the type?

You should be able to compare the `QualType` of the resulting `VarDecl` against 
`ASTContext::getObjCNSStringType()` (accounting for qualifiers, pointers, etc).


================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:5355
+    S.Diag(identLoc->Loc, diag::err_nserrordomain_invalid_decl)
+        << identLoc->Ident;
+    return;
----------------
MForster wrote:
> aaron.ballman wrote:
> > MForster wrote:
> > > aaron.ballman wrote:
> > > > We're doing this lookup in the context of where the attribute is being 
> > > > used, but then creating the attribute with only the identifier and not 
> > > > the result of that lookup. This makes me a bit worried that when 
> > > > something goes to resolve that identifier to a variable later, it may 
> > > > get a different result because the lookup context will be different. Do 
> > > > you need to store the VarDecl on the semantic attribute, rather than 
> > > > the identifier?
> > > >We're doing this lookup in the context of where the attribute is being 
> > > >used, but then creating the attribute with only the identifier and not 
> > > >the result of that lookup. This makes me a bit worried that when 
> > > >something goes to resolve that identifier to a variable later, it may 
> > > >get a different result because the lookup context will be different. Do 
> > > >you need to store the VarDecl on the semantic attribute, rather than the 
> > > >identifier?
> > > 
> > > 
> > > When this gets imported into Swift, only the name of the identifier gets 
> > > used. I'm not quite sure why this was defined like this. This is another 
> > > thing where I would hope that @gribozavr2 or @milseman know more...
> > Based on the answer from @doug.gregor, I think this should be adding the 
> > result of the lookup to the semantic attribute and not the identifier (the 
> > identifier may not be unique, the VarDecl must be unique though).
> > Based on the answer from @doug.gregor, I think this should be adding the 
> > result of the lookup to the semantic attribute and not the identifier (the 
> > identifier may not be unique, the VarDecl must be unique though).
> 
> How are you suggesting to implement that? Change the argument to to be a 
> `DeclArgument` or `ExprArgument` instead of an `IdentifierArgument`?
>>Based on the answer from @doug.gregor, I think this should be adding the 
>>result of the lookup to the semantic attribute and not the identifier (the 
>>identifier may not be unique, the VarDecl must be unique though).
> How are you suggesting to implement that? Change the argument to to be a 
> DeclArgument or ExprArgument instead of an IdentifierArgument?

I think `DeclArgument` is probably the correct approach and you should be able 
to model it somewhat off the `cleanup` attribute. Otherwise, you can gin up a 
"fake" attribute argument. Those aren't arguments used by the parser or pretty 
printer, but are used to form the semantic attribute constructor to provide 
additional information.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D84005/new/

https://reviews.llvm.org/D84005



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to