forked from qt-creator/qt-creator
Fixed macro locations.
This commit is contained in:
@@ -481,12 +481,12 @@ void pp::operator () (const QByteArray &filename,
|
|||||||
const QByteArray &source,
|
const QByteArray &source,
|
||||||
QByteArray *result)
|
QByteArray *result)
|
||||||
{
|
{
|
||||||
const QByteArray previousFile = env.current_file;
|
const QByteArray previousFile = env.currentFile;
|
||||||
env.current_file = filename;
|
env.currentFile = filename;
|
||||||
|
|
||||||
operator () (source, result);
|
operator () (source, result);
|
||||||
|
|
||||||
env.current_file = previousFile;
|
env.currentFile = previousFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
pp::State pp::createStateFromSource(const QByteArray &source) const
|
pp::State pp::createStateFromSource(const QByteArray &source) const
|
||||||
@@ -518,7 +518,7 @@ void pp::operator()(const QByteArray &source, QByteArray *result)
|
|||||||
result->append(QByteArray::number(_dot->lineno));
|
result->append(QByteArray::number(_dot->lineno));
|
||||||
result->append(' ');
|
result->append(' ');
|
||||||
result->append('"');
|
result->append('"');
|
||||||
result->append(env.current_file);
|
result->append(env.currentFile);
|
||||||
result->append('"');
|
result->append('"');
|
||||||
result->append('\n');
|
result->append('\n');
|
||||||
} else {
|
} else {
|
||||||
@@ -844,6 +844,8 @@ void pp::processDefine(TokenIterator firstToken, TokenIterator lastToken)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Macro macro;
|
Macro macro;
|
||||||
|
macro.fileName = env.currentFile;
|
||||||
|
macro.line = env.currentLine;
|
||||||
macro.name = tokenText(*tk);
|
macro.name = tokenText(*tk);
|
||||||
++tk; // skip T_IDENTIFIER
|
++tk; // skip T_IDENTIFIER
|
||||||
|
|
||||||
|
|||||||
@@ -97,8 +97,6 @@ Macro *Environment::bind(const Macro &__macro)
|
|||||||
|
|
||||||
Macro *m = new Macro (__macro);
|
Macro *m = new Macro (__macro);
|
||||||
m->hashcode = hash_code(m->name);
|
m->hashcode = hash_code(m->name);
|
||||||
m->fileName = current_file;
|
|
||||||
m->line = currentLine;
|
|
||||||
|
|
||||||
if (++_macro_count == _allocated_macros) {
|
if (++_macro_count == _allocated_macros) {
|
||||||
if (! _allocated_macros)
|
if (! _allocated_macros)
|
||||||
@@ -122,11 +120,13 @@ Macro *Environment::bind(const Macro &__macro)
|
|||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
Macro *Environment::remove (const QByteArray &name)
|
Macro *Environment::remove(const QByteArray &name)
|
||||||
{
|
{
|
||||||
Macro macro;
|
Macro macro;
|
||||||
macro.name = name;
|
macro.name = name;
|
||||||
macro.hidden = true;
|
macro.hidden = true;
|
||||||
|
macro.fileName = currentFile;
|
||||||
|
macro.line = currentLine;
|
||||||
return bind(macro);
|
return bind(macro);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ private:
|
|||||||
void rehash();
|
void rehash();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QByteArray current_file;
|
QByteArray currentFile;
|
||||||
unsigned currentLine;
|
unsigned currentLine;
|
||||||
bool hide_next;
|
bool hide_next;
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ const char *MacroExpander::operator () (const char *__first, const char *__last,
|
|||||||
__result->append(QByteArray::number(env.currentLine));
|
__result->append(QByteArray::number(env.currentLine));
|
||||||
__result->append(' ');
|
__result->append(' ');
|
||||||
__result->append('"');
|
__result->append('"');
|
||||||
__result->append(env.current_file);
|
__result->append(env.currentFile);
|
||||||
__result->append('"');
|
__result->append('"');
|
||||||
__result->append('\n');
|
__result->append('\n');
|
||||||
++lines;
|
++lines;
|
||||||
@@ -218,7 +218,7 @@ const char *MacroExpander::operator () (const char *__first, const char *__last,
|
|||||||
else if (fast_name == "__FILE__")
|
else if (fast_name == "__FILE__")
|
||||||
{
|
{
|
||||||
__result->append('"');
|
__result->append('"');
|
||||||
__result->append(env.current_file);
|
__result->append(env.currentFile);
|
||||||
__result->append('"');
|
__result->append('"');
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -390,17 +390,17 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type)
|
|||||||
} else {
|
} else {
|
||||||
Document::Ptr previousDoc = switchDocument(Document::create(fileName));
|
Document::Ptr previousDoc = switchDocument(Document::create(fileName));
|
||||||
|
|
||||||
const QByteArray previousFile = env.current_file;
|
const QByteArray previousFile = env.currentFile;
|
||||||
const unsigned previousLine = env.currentLine;
|
const unsigned previousLine = env.currentLine;
|
||||||
|
|
||||||
env.current_file = QByteArray(m_currentDoc->translationUnit()->fileName(),
|
env.currentFile = QByteArray(m_currentDoc->translationUnit()->fileName(),
|
||||||
m_currentDoc->translationUnit()->fileNameLength());
|
m_currentDoc->translationUnit()->fileNameLength());
|
||||||
|
|
||||||
QByteArray preprocessedCode;
|
QByteArray preprocessedCode;
|
||||||
m_proc(contents, &preprocessedCode);
|
m_proc(contents, &preprocessedCode);
|
||||||
//qDebug() << preprocessedCode;
|
//qDebug() << preprocessedCode;
|
||||||
|
|
||||||
env.current_file = previousFile;
|
env.currentFile = previousFile;
|
||||||
env.currentLine = previousLine;
|
env.currentLine = previousLine;
|
||||||
|
|
||||||
m_currentDoc->setSource(preprocessedCode);
|
m_currentDoc->setSource(preprocessedCode);
|
||||||
|
|||||||
Reference in New Issue
Block a user