type; this isn't explicitly stated in the standard, but it doesn't
really make sense for them to have an effect here. Fixes the included
testcase, sent to me by Steve Naroff.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52113
91177308-0d34-0410-b5e6-
96231b3b80d8
} else if (ElemType->isScalarType()) {
CheckScalarType(IList, ElemType, Index);
} else if (expr->getType()->getAsRecordType() &&
- SemaRef->Context.typesAreCompatible(expr->getType(), ElemType)) {
+ SemaRef->Context.typesAreCompatible(
+ expr->getType().getUnqualifiedType(),
+ ElemType.getUnqualifiedType())) {
Index++;
// FIXME: Add checking
} else {
--- /dev/null
+// RUN: clang -fsyntax-only -verify < %s
+typedef float CGFloat;
+typedef struct _NSPoint { CGFloat x; CGFloat y; } NSPoint;
+typedef struct _NSSize { CGFloat width; CGFloat height; } NSSize;
+typedef struct _NSRect { NSPoint origin; NSSize size; } NSRect;
+
+extern const NSPoint NSZeroPoint;
+
+extern NSSize canvasSize();
+void func() {
+ const NSRect canvasRect = { NSZeroPoint, canvasSize() };
+}