[PATCH] D44439: [Sema] Pop function scope when instantiating a func with skipped body
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 14 05:28:14 PDT 2018
ilya-biryukov added a comment.
@aaron.ballman , here's a test-case I came up with. I'll fix the other issue (invalid error, that forces the test to fail) and submit it for review along with the fix for the error. Does that SG?
template <class T>
auto make_func() {
struct impl {
impl* func() {
// body of this function is skipped during completion.
// but will be instantiated anyway.
return this;
}
};
return impl();
}
void foo() {
[]() {
make_func<int>(); // currently also produces invalid error `function with auto-deduced type 'make_func<int>' is used before defined
m
// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:17:6 %s -o - | FileCheck %s
// CHECK: make_func : [#auto#]make_func<<#class T#>>()
};
}
================
Comment at: lib/Sema/SemaTemplateInstantiateDecl.cpp:3967
// context seems wrong. Investigate more.
- ActOnFinishFunctionBody(Function, Body.get(),
- /*IsInstantiation=*/true);
+ ActOnFinishFunctionBody(Function, Body.get(), /*IsInstantiation=*/true);
}
----------------
aaron.ballman wrote:
> This change looks unrelated to the patch.
It was a formatting change.
Repository:
rC Clang
https://reviews.llvm.org/D44439
More information about the cfe-commits
mailing list