[SemaObjC] Forbid storing an unboxed integer literal in an NSNumber
authorErik Pilkington <erik.pilkington@gmail.com>
Mon, 13 Apr 2020 20:19:16 +0000 (16:19 -0400)
committerErik Pilkington <erik.pilkington@gmail.com>
Mon, 20 Apr 2020 19:22:51 +0000 (15:22 -0400)
commit85cca945b4c93ecfd3f3bb7a7b2d5fa4104c3560
tree18eef7bc9cd7051cd10da6b772fcf0e120042481
parent6529b0c48aab83bdada1d21a79da13b0971d1aec
[SemaObjC] Forbid storing an unboxed integer literal in an NSNumber

This fixes a common mistake (the 3 should be @3): NSNumber *n = 3. This extends
an existing check for NSString. Also, this only errs if the initializer isn't a
null pointer constant, so NSNumber *n = 0; continues to work. rdar://47029572

Differential revision: https://reviews.llvm.org/D78066
clang/include/clang/Basic/DiagnosticSemaKinds.td
clang/include/clang/Sema/Sema.h
clang/lib/Sema/SemaExpr.cpp
clang/lib/Sema/SemaExprObjC.cpp
clang/lib/Sema/SemaInit.cpp
clang/test/SemaObjC/objc-literal-fixit.m [new file with mode: 0644]