forked from qt-creator/qt-creator
Mark the generated regions of text.
This commit is contained in:
@@ -407,10 +407,13 @@ void LookupContext::expandClass(Scope *scope,
|
|||||||
Name *baseClassName = baseClass->name();
|
Name *baseClassName = baseClass->name();
|
||||||
const QList<Symbol *> baseClassCandidates = resolveClass(baseClassName,
|
const QList<Symbol *> baseClassCandidates = resolveClass(baseClassName,
|
||||||
classVisibleScopes);
|
classVisibleScopes);
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (baseClassCandidates.isEmpty()) {
|
if (baseClassCandidates.isEmpty()) {
|
||||||
Overview overview;
|
Overview overview;
|
||||||
qDebug() << "unresolved base class:" << overview.prettyName(baseClassName);
|
qDebug() << "unresolved base class:" << overview.prettyName(baseClassName);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int j = 0; j < baseClassCandidates.size(); ++j) {
|
for (int j = 0; j < baseClassCandidates.size(); ++j) {
|
||||||
if (Class *baseClassSymbol = baseClassCandidates.at(j)->asClass())
|
if (Class *baseClassSymbol = baseClassCandidates.at(j)->asClass())
|
||||||
|
|||||||
@@ -530,7 +530,8 @@ Preprocessor::Preprocessor(Client *client, Environment *env)
|
|||||||
: client(client),
|
: client(client),
|
||||||
env(env),
|
env(env),
|
||||||
_expand(env),
|
_expand(env),
|
||||||
_result(0)
|
_result(0),
|
||||||
|
_markGeneratedTokens(false)
|
||||||
{
|
{
|
||||||
resetIfLevel ();
|
resetIfLevel ();
|
||||||
}
|
}
|
||||||
@@ -603,12 +604,12 @@ Preprocessor::State Preprocessor::createStateFromSource(const QByteArray &source
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Preprocessor::processNewline()
|
void Preprocessor::processNewline(bool force)
|
||||||
{
|
{
|
||||||
if (env->currentLine == _dot->lineno)
|
if (! force && env->currentLine == _dot->lineno)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (env->currentLine > _dot->lineno) {
|
if (force || env->currentLine > _dot->lineno) {
|
||||||
_result->append("\n# ");
|
_result->append("\n# ");
|
||||||
_result->append(QByteArray::number(_dot->lineno));
|
_result->append(QByteArray::number(_dot->lineno));
|
||||||
_result->append(' ');
|
_result->append(' ');
|
||||||
@@ -648,6 +649,50 @@ void Preprocessor::processSkippingBlocks(bool skippingBlocks,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Preprocessor::markGeneratedTokens(bool markGeneratedTokens,
|
||||||
|
TokenIterator dot)
|
||||||
|
{
|
||||||
|
bool previous = _markGeneratedTokens;
|
||||||
|
_markGeneratedTokens = markGeneratedTokens;
|
||||||
|
|
||||||
|
if (previous != _markGeneratedTokens) {
|
||||||
|
if (! dot)
|
||||||
|
dot = _dot;
|
||||||
|
|
||||||
|
if (_markGeneratedTokens)
|
||||||
|
_result->append("\n#pragma push(gen)");
|
||||||
|
else
|
||||||
|
_result->append("\n#pragma pop(gen)");
|
||||||
|
|
||||||
|
processNewline(/*force = */ true);
|
||||||
|
|
||||||
|
const char *begin = _source.constBegin();
|
||||||
|
const char *end = begin;
|
||||||
|
|
||||||
|
if (markGeneratedTokens)
|
||||||
|
end += dot->begin();
|
||||||
|
else
|
||||||
|
end += (dot - 1)->end();
|
||||||
|
|
||||||
|
const char *it = end - 1;
|
||||||
|
for (; it != begin - 1; --it) {
|
||||||
|
if (*it == '\n')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++it;
|
||||||
|
|
||||||
|
for (; it != end; ++it) {
|
||||||
|
if (! std::isspace(*it))
|
||||||
|
_result->append(' ');
|
||||||
|
|
||||||
|
else
|
||||||
|
_result->append(*it);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return previous;
|
||||||
|
}
|
||||||
|
|
||||||
void Preprocessor::preprocess(const QByteArray &fileName, const QByteArray &source,
|
void Preprocessor::preprocess(const QByteArray &fileName, const QByteArray &source,
|
||||||
QByteArray *result)
|
QByteArray *result)
|
||||||
{
|
{
|
||||||
@@ -846,7 +891,9 @@ Macro *Preprocessor::processObjectLikeMacro(TokenIterator identifierToken,
|
|||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const bool was = markGeneratedTokens(true, identifierToken);
|
||||||
_result->append(tmp);
|
_result->append(tmp);
|
||||||
|
(void) markGeneratedTokens(was);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -859,7 +906,9 @@ void Preprocessor::expandBuiltinMacro(TokenIterator identifierToken,
|
|||||||
client->startExpandingMacro(identifierToken->offset,
|
client->startExpandingMacro(identifierToken->offset,
|
||||||
trivial, spell);
|
trivial, spell);
|
||||||
|
|
||||||
|
const bool was = markGeneratedTokens(true, identifierToken);
|
||||||
expand(spell, _result);
|
expand(spell, _result);
|
||||||
|
(void) markGeneratedTokens(was);
|
||||||
|
|
||||||
if (client)
|
if (client)
|
||||||
client->stopExpandingMacro(_dot->offset, trivial);
|
client->stopExpandingMacro(_dot->offset, trivial);
|
||||||
@@ -899,7 +948,9 @@ void Preprocessor::expandFunctionLikeMacro(TokenIterator identifierToken,
|
|||||||
*m, text, actuals);
|
*m, text, actuals);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const bool was = markGeneratedTokens(true, identifierToken);
|
||||||
expand(beginOfText, endOfText, _result);
|
expand(beginOfText, endOfText, _result);
|
||||||
|
(void) markGeneratedTokens(was);
|
||||||
|
|
||||||
if (client)
|
if (client)
|
||||||
client->stopExpandingMacro(_dot->offset, *m);
|
client->stopExpandingMacro(_dot->offset, *m);
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ private:
|
|||||||
TokenIterator dot;
|
TokenIterator dot;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool markGeneratedTokens(bool markGeneratedTokens, TokenIterator dot = 0);
|
||||||
|
|
||||||
void preprocess(const QByteArray &filename,
|
void preprocess(const QByteArray &filename,
|
||||||
const QByteArray &source,
|
const QByteArray &source,
|
||||||
QByteArray *result);
|
QByteArray *result);
|
||||||
@@ -133,7 +135,7 @@ private:
|
|||||||
void collectActualArguments(QVector<MacroArgumentReference> *actuals);
|
void collectActualArguments(QVector<MacroArgumentReference> *actuals);
|
||||||
MacroArgumentReference collectOneActualArgument();
|
MacroArgumentReference collectOneActualArgument();
|
||||||
|
|
||||||
void processNewline();
|
void processNewline(bool force = false);
|
||||||
|
|
||||||
void processSkippingBlocks(bool skippingBlocks,
|
void processSkippingBlocks(bool skippingBlocks,
|
||||||
TokenIterator dot, TokenIterator lastToken);
|
TokenIterator dot, TokenIterator lastToken);
|
||||||
@@ -179,6 +181,7 @@ private:
|
|||||||
TokenIterator _dot;
|
TokenIterator _dot;
|
||||||
|
|
||||||
QByteArray *_result;
|
QByteArray *_result;
|
||||||
|
bool _markGeneratedTokens;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace CPlusPlus
|
} // namespace CPlusPlus
|
||||||
|
|||||||
@@ -370,8 +370,7 @@ void CPPEditor::jumpToMethod(int)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Core::EditorManager::instance()->addCurrentPositionToNavigationHistory(true);
|
Core::EditorManager::instance()->addCurrentPositionToNavigationHistory(true);
|
||||||
int line = symbol->line();
|
openEditorAt(symbol);
|
||||||
gotoLine(line);
|
|
||||||
Core::EditorManager::instance()->addCurrentPositionToNavigationHistory();
|
Core::EditorManager::instance()->addCurrentPositionToNavigationHistory();
|
||||||
setFocus();
|
setFocus();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user