Skip to content

Commit

Permalink
[cling] Support bare # in input line: (#14109)
Browse files Browse the repository at this point in the history
fixes #11190.

Co-authored-by: Devajith Valaparambil Sreeramaswamy <[email protected]>
  • Loading branch information
Axel-Naumann and devajithvs authored Jan 25, 2024
1 parent 32437e0 commit 88c66eb
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
14 changes: 8 additions & 6 deletions interpreter/cling/lib/MetaProcessor/InputValidator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,17 +82,19 @@ namespace cling {
case tok::hash:
Lex.SkipWhitespace();
Lex.LexAnyString(Tok);
const llvm::StringRef PPtk = Tok.getIdent();
if (PPtk.startswith("if")) {
m_ParenStack.push_back(tok::hash);
} else if (PPtk.startswith("endif") &&
(PPtk.size() == 5 || PPtk[5]=='/' || isspace(PPtk[5]))) {
if (Tok.isNot(tok::eof)) {
const llvm::StringRef PPtk = Tok.getIdent();
if (PPtk.startswith("if")) {
m_ParenStack.push_back(tok::hash);
} else if (PPtk.startswith("endif") &&
(PPtk.size() == 5 || PPtk[5] == '/' || isspace(PPtk[5]))) {
if (m_ParenStack.empty() || m_ParenStack.back() != tok::hash)
Res = kMismatch;
else
m_ParenStack.pop_back();
}
break;
}
break;
}
} while (Tok.isNot(tok::eof) && Res != kMismatch);

Expand Down
7 changes: 7 additions & 0 deletions interpreter/cling/lib/MetaProcessor/MetaLexer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,13 @@ namespace cling {
void MetaLexer::LexAnyString(Token& Tok) {
Tok.startToken(curPos);
// consume until we reach one of the "AnyString" delimiters or EOF.
if (*curPos == '\0') {
Tok.setBufStart(curPos);
Tok.setKind(tok::eof);
Tok.setLength(0);
return;
}

while(*curPos != ' ' && *curPos != '\t' && *curPos != '\0') {
curPos++;
}
Expand Down
3 changes: 3 additions & 0 deletions interpreter/cling/test/Prompt/MetaProcessor/InputValidator.C
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// LICENSE.TXT for details.
//------------------------------------------------------------------------------

// clang-format off
// RUN: cat %s | %cling | FileCheck %s
"simple"
//CHECK: (const char[7]) "simple"
Expand All @@ -17,4 +18,6 @@
//CHECK: (const char[24]) "http://foo/bar/whatever"
("http://foo.bar/whatever")
//CHECK: (const char[24]) "http://foo.bar/whatever"
#
// CHECK-EMPTY:
.q

0 comments on commit 88c66eb

Please sign in to comment.