diff options
| author | Daniel Jasper <djasper@google.com> | 2014-06-20 08:44:22 +0000 |
|---|---|---|
| committer | Daniel Jasper <djasper@google.com> | 2014-06-20 08:44:22 +0000 |
| commit | b3b0b8034c60c382516448cea0abacdbdff8bc8b (patch) | |
| tree | da279943315e3d177a8b4aeba077c362f061db4f /clang/test | |
| parent | cd60ed53f6069a79312d31e27298990bd6486436 (diff) | |
| download | bcm5719-llvm-b3b0b8034c60c382516448cea0abacdbdff8bc8b.tar.gz bcm5719-llvm-b3b0b8034c60c382516448cea0abacdbdff8bc8b.zip | |
Fix/Improve SourceRange of explicitly defaulted members
When adding the implicit compound statement (required for Codegen?), the
end location was previously overridden by the start location, probably
based on the assumptions:
* The location of the compound statement should be the member's location
* The compound statement if present is the last element of a FunctionDecl
This patch changes the location of the compound statement to the
member's end location.
Code review: http://reviews.llvm.org/D4175
llvm-svn: 211344
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Analysis/inlining/path-notes.cpp | 10 | ||||
| -rw-r--r-- | clang/test/Misc/ast-dump-decl.cpp | 25 | ||||
| -rw-r--r-- | clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp | 2 |
3 files changed, 31 insertions, 6 deletions
diff --git a/clang/test/Analysis/inlining/path-notes.cpp b/clang/test/Analysis/inlining/path-notes.cpp index a1ac53c5035..1e230740cf0 100644 --- a/clang/test/Analysis/inlining/path-notes.cpp +++ b/clang/test/Analysis/inlining/path-notes.cpp @@ -2452,12 +2452,12 @@ namespace PR17746 { // CHECK-NEXT: <array> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>105</integer> -// CHECK-NEXT: <key>col</key><integer>21</integer> +// CHECK-NEXT: <key>col</key><integer>53</integer> // CHECK-NEXT: <key>file</key><integer>0</integer> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>105</integer> -// CHECK-NEXT: <key>col</key><integer>28</integer> +// CHECK-NEXT: <key>col</key><integer>53</integer> // CHECK-NEXT: <key>file</key><integer>0</integer> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> @@ -2469,7 +2469,7 @@ namespace PR17746 { // CHECK-NEXT: <key>location</key> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>105</integer> -// CHECK-NEXT: <key>col</key><integer>21</integer> +// CHECK-NEXT: <key>col</key><integer>53</integer> // CHECK-NEXT: <key>file</key><integer>0</integer> // CHECK-NEXT: </dict> // CHECK-NEXT: <key>ranges</key> @@ -2477,12 +2477,12 @@ namespace PR17746 { // CHECK-NEXT: <array> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>105</integer> -// CHECK-NEXT: <key>col</key><integer>21</integer> +// CHECK-NEXT: <key>col</key><integer>53</integer> // CHECK-NEXT: <key>file</key><integer>0</integer> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>line</key><integer>105</integer> -// CHECK-NEXT: <key>col</key><integer>28</integer> +// CHECK-NEXT: <key>col</key><integer>53</integer> // CHECK-NEXT: <key>file</key><integer>0</integer> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> diff --git a/clang/test/Misc/ast-dump-decl.cpp b/clang/test/Misc/ast-dump-decl.cpp index 8f20c46c0ac..b41e4ee3d0f 100644 --- a/clang/test/Misc/ast-dump-decl.cpp +++ b/clang/test/Misc/ast-dump-decl.cpp @@ -133,6 +133,31 @@ class TestCXXDestructorDecl { // CHECK: CXXDestructorDecl{{.*}} ~TestCXXDestructorDecl 'void (void) noexcept' // CHECK-NEXT: CompoundStmt +// Test that the range of a defaulted members is computed correctly. +// FIXME: This should include the "= default". +class TestMemberRanges { +public: + TestMemberRanges() = default; + TestMemberRanges(const TestMemberRanges &Other) = default; + TestMemberRanges(TestMemberRanges &&Other) = default; + ~TestMemberRanges() = default; + TestMemberRanges &operator=(const TestMemberRanges &Other) = default; + TestMemberRanges &operator=(TestMemberRanges &&Other) = default; +}; +void SomeFunction() { + TestMemberRanges A; + TestMemberRanges B(A); + B = A; + A = static_cast<TestMemberRanges &&>(B); + TestMemberRanges C(static_cast<TestMemberRanges &&>(A)); +} +// CHECK: CXXConstructorDecl{{.*}} <line:{{.*}}:3, col:20> +// CHECK: CXXConstructorDecl{{.*}} <line:{{.*}}:3, col:49> +// CHECK: CXXConstructorDecl{{.*}} <line:{{.*}}:3, col:44> +// CHECK: CXXDestructorDecl{{.*}} <line:{{.*}}:3, col:21> +// CHECK: CXXMethodDecl{{.*}} <line:{{.*}}:3, col:60> +// CHECK: CXXMethodDecl{{.*}} <line:{{.*}}:3, col:55> + class TestCXXConversionDecl { operator int() { return 0; } }; diff --git a/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp b/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp index 31cdef59d9f..67946713c01 100644 --- a/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp +++ b/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp @@ -13,5 +13,5 @@ void f() { a1 = a2; B b1, b2; - b1 = b2; + b1 = b2; } |

