diff options
author | Malcolm Parsons <malcolm.parsons@gmail.com> | 2016-10-21 21:13:56 +0000 |
---|---|---|
committer | Malcolm Parsons <malcolm.parsons@gmail.com> | 2016-10-21 21:13:56 +0000 |
commit | 57c09c8e23ec30c61d31fbb89f97c27413c3e8fe (patch) | |
tree | 1f341355f3b7684916e1b203733f6cec3e53ca94 /clang/unittests/AST/SourceLocationTest.cpp | |
parent | 8659d16631fdd1ff519a25d6867ddd9dbda8aea9 (diff) | |
download | llvm-57c09c8e23ec30c61d31fbb89f97c27413c3e8fe.zip llvm-57c09c8e23ec30c61d31fbb89f97c27413c3e8fe.tar.gz llvm-57c09c8e23ec30c61d31fbb89f97c27413c3e8fe.tar.bz2 |
[Sema] Store a SourceRange for multi-token builtin types
Summary:
clang-tidy's modernize-use-auto check uses the SourceRange of a
TypeLoc when replacing the type with auto.
This was producing the wrong result for multi-token builtin types
like long long:
-long long *ll = new long long();
+auto long *ll = new long long();
Reviewers: alexfh, hokein, rsmith, Prazek, aaron.ballman
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D25363
llvm-svn: 284885
Diffstat (limited to 'clang/unittests/AST/SourceLocationTest.cpp')
-rw-r--r-- | clang/unittests/AST/SourceLocationTest.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/clang/unittests/AST/SourceLocationTest.cpp b/clang/unittests/AST/SourceLocationTest.cpp index 9fae8d8..add85c3 100644 --- a/clang/unittests/AST/SourceLocationTest.cpp +++ b/clang/unittests/AST/SourceLocationTest.cpp @@ -148,6 +148,96 @@ TEST(VarDecl, VMTypeFixedVarDeclRange) { varDecl(), Lang_C89)); } +TEST(TypeLoc, IntRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 1); + EXPECT_TRUE(Verifier.match("int a;", typeLoc())); +} + +TEST(TypeLoc, LongRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 1); + EXPECT_TRUE(Verifier.match("long a;", typeLoc())); +} + +TEST(TypeLoc, LongDoubleRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 6); + EXPECT_TRUE(Verifier.match("long double a;", typeLoc())); +} + +TEST(TypeLoc, DoubleLongRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 8); + EXPECT_TRUE(Verifier.match("double long a;", typeLoc())); +} + +TEST(TypeLoc, LongIntRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 6); + EXPECT_TRUE(Verifier.match("long int a;", typeLoc())); +} + +TEST(TypeLoc, IntLongRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 5); + EXPECT_TRUE(Verifier.match("int long a;", typeLoc())); +} + +TEST(TypeLoc, UnsignedIntRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 10); + EXPECT_TRUE(Verifier.match("unsigned int a;", typeLoc())); +} + +TEST(TypeLoc, IntUnsignedRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 5); + EXPECT_TRUE(Verifier.match("int unsigned a;", typeLoc())); +} + +TEST(TypeLoc, LongLongRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 6); + EXPECT_TRUE(Verifier.match("long long a;", typeLoc())); +} + +TEST(TypeLoc, UnsignedLongLongRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 15); + EXPECT_TRUE(Verifier.match("unsigned long long a;", typeLoc())); +} + +TEST(TypeLoc, LongUnsignedLongRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 15); + EXPECT_TRUE(Verifier.match("long unsigned long a;", typeLoc())); +} + +TEST(TypeLoc, LongLongUnsignedRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 11); + EXPECT_TRUE(Verifier.match("long long unsigned a;", typeLoc())); +} + +TEST(TypeLoc, ConstLongLongRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 7, 1, 12); + EXPECT_TRUE(Verifier.match("const long long a = 0;", typeLoc())); +} + +TEST(TypeLoc, LongConstLongRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 12); + EXPECT_TRUE(Verifier.match("long const long a = 0;", typeLoc())); +} + +TEST(TypeLoc, LongLongConstRange) { + RangeVerifier<TypeLoc> Verifier; + Verifier.expectRange(1, 1, 1, 6); + EXPECT_TRUE(Verifier.match("long long const a = 0;", typeLoc())); +} + TEST(CXXConstructorDecl, NoRetFunTypeLocRange) { RangeVerifier<CXXConstructorDecl> Verifier; Verifier.expectRange(1, 11, 1, 13); |