зеркало из https://github.com/microsoft/clang-1.git
Handle a code-completion token being passed to the macro stringify operator.
Fixes http://llvm.org/PR10826. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139087 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
7d10087234
Коммит
8e85e85b8c
|
@ -221,6 +221,8 @@ Token MacroArgs::StringifyArgument(const Token *ArgToks,
|
||||||
std::string Str = Lexer::Stringify(TokStr);
|
std::string Str = Lexer::Stringify(TokStr);
|
||||||
Result.append(Str.begin(), Str.end());
|
Result.append(Str.begin(), Str.end());
|
||||||
}
|
}
|
||||||
|
} else if (Tok.is(tok::code_completion)) {
|
||||||
|
PP.CodeCompleteNaturalLanguage();
|
||||||
} else {
|
} else {
|
||||||
// Otherwise, just append the token. Do some gymnastics to get the token
|
// Otherwise, just append the token. Do some gymnastics to get the token
|
||||||
// in place and avoid copies where possible.
|
// in place and avoid copies where possible.
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
const char *func(const char *);
|
||||||
|
|
||||||
|
#define MORE __FILE__
|
||||||
|
|
||||||
|
#define M(x) "1"#x
|
||||||
|
#define N(x) func("2"#x MORE)
|
||||||
|
|
||||||
|
void foo(const char *);
|
||||||
|
|
||||||
|
int test() {
|
||||||
|
foo(M(x()));
|
||||||
|
foo(N(x()));
|
||||||
|
}
|
||||||
|
|
||||||
|
// RUN: c-index-test -code-completion-at=%s:11:11 %s | FileCheck %s
|
||||||
|
// RUN: c-index-test -code-completion-at=%s:12:11 %s | FileCheck %s
|
||||||
|
// CHECK: Natural language
|
Загрузка…
Ссылка в новой задаче