Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaObjC/dictionary-literal-duplicates.m @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | 0572611fdcc8 |
children | c4bab56944e8 |
line wrap: on
line source
// RUN: %clang_cc1 -Wno-objc-root-class %s -verify // RUN: %clang_cc1 -xobjective-c++ -Wno-objc-root-class %s -verify #define YES __objc_yes #define NO __objc_no @interface NSNumber +(instancetype)numberWithChar:(char)value; +(instancetype)numberWithInt:(int)value; +(instancetype)numberWithDouble:(double)value; +(instancetype)numberWithBool:(unsigned char)value; +(instancetype)numberWithUnsignedLong:(unsigned long)value; +(instancetype)numberWithLongLong:(long long) value; +(instancetype)numberWithUnsignedInt:(unsigned)value; @end @interface NSString @end @interface NSDictionary + (instancetype)dictionaryWithObjects:(const id[])objects forKeys:(const id[])keys count:(unsigned long)cnt; @end void test() { NSDictionary *t1 = @{ @"foo" : @0, // expected-note 2 {{previous equal key is here}} @"foo" : @0, // expected-warning{{duplicate key in dictionary literal}} @("foo") : @0, // expected-warning{{duplicate key in dictionary literal}} @"foo\0" : @0, @1 : @0, // expected-note + {{previous equal key is here}} @YES : @0, // expected-warning{{duplicate key in dictionary literal}} @'\1' : @0, // expected-warning{{duplicate key in dictionary literal}} @1 : @0, // expected-warning{{duplicate key in dictionary literal}} @1ul : @0, // expected-warning{{duplicate key in dictionary literal}} @1ll : @0, // expected-warning{{duplicate key in dictionary literal}} #ifdef __cplusplus @true : @0, // expected-warning{{duplicate key in dictionary literal}} #endif @1.0 : @0, // FIXME: should warn @-1 : @0, // expected-note + {{previous equal key is here}} @4294967295u : @0, // no warning @-1ll : @0, // expected-warning{{duplicate key in dictionary literal}} @(NO-YES) : @0, // expected-warning{{duplicate key in dictionary literal}} }; } #ifdef __cplusplus template <class... Ts> void variadic(Ts... ts) { NSDictionary *nd = @{ ts : @0 ..., @0 : ts ... // expected-warning 2 {{duplicate key in dictionary literal}} expected-note 2 {{previous equal key is here}} }; } void call_variadic() { variadic(@0, @1, @2); // expected-note {{in instantiation}} } #endif