hokein added inline comments.

================
Comment at: clang/test/Sema/error-dependence.c:18
+  // type is required" is not emitted.
+  ptr > f ? ptr : f; // expected-error {{invalid operands to binary 
expression}}
+}
----------------
sammccall wrote:
> nit: parens would help me understand here :-)
> 
> I don't find this example compelling because we should know that "ptr > f" is 
> a boolean.
> 
> Can we just have `undefined ? ptr : f`, expecting the only diag to be the 
> undeclared ident?
> I don't find this example compelling because we should know that "ptr > f" is 
> a boolean.

this is a reasonable impression, but in this case, there is no binary-operator 
`>` -- operands `ptr`, `f` have different types, and invalid for binary 
operator, instead we build a recovery-expr.

so the AST looks like (added in the dump-recovery.c test as well)

```
  ConditionalOperator> '<dependent type>' contains-errors
    | |-RecoveryExpr  '<dependent type>' contains-errors lvalue
    | | |-DeclRefExpr  'int *' lvalue Var 0x8fdb620 'ptr' 'int *'
    | | `-DeclRefExpr  'float' lvalue Var 0x8ffd388 'f' 'float'
    | |-DeclRefExpr  'int *' lvalue Var 0x8fdb620 'ptr' 'int *'
    | `-DeclRefExpr  'float' lvalue Var 0x8ffd388 'f' 'float'
``` 

> Can we just have undefined ? ptr : f, expecting the only diag to be the 
> undeclared ident?

no unfortunately. the whole statement is being dropped (we don't preserve this 
in C/C++). 


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D84322

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

Reply via email to