ABataev marked an inline comment as done.
ABataev added inline comments.

================
Comment at: clang/lib/Sema/SemaExpr.cpp:4751
+                                       LParenLoc, RParenLoc, Dims, Brackets);
+  if (!BaseTy->isAnyPointerType())
+    return ExprError(Diag(Base->getExprLoc(),
----------------
ABataev wrote:
> rjmccall wrote:
> > I think you should perform DefaultFunctionArrayLvalueConversion here so 
> > that e.g. arrays will decay to pointers, you load pointers from l-values, 
> > and so on.  If you do so, it'll handle placeholders for you.
> > 
> > Do you really want to allow this to operate on non-C pointer types?
> 1. Standard clearly states that the type of the base expression must be a 
> pointer. I don't think that we should perform implicit type casting here, 
> like decay to pointers, etc.
> 2. It is just a simple form of checking that this is a pointer type. Since 
> this expression is not allowed in other languages (and I filter it out at the 
> parsing stage), I think it is ok to use the generic form of type checking.
Forgot to mention, that I thought about possible conversion here. But it may 
lead to some unpredictable results, like:
```
int a[3];
...([3][4][n])a...
```
Better to do not allow this kind of operation, I think.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D74144



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

Reply via email to