qdoc: ignores .pragma and .import in javascript files
For some reason, the QML/JS parser doesn't like them, so they must be removed when qdoc parses JavaScript code. This update handles every case I could find except jquery.min.js, which is a different problem. Change-Id: Iacbc4eda554516496a642189368d63d6560e3571 Task-number: QTBUG-44817 Reviewed-by: Caroline Chao <caroline.chao@theqtcompany.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
This commit is contained in:
parent
32d1803d60
commit
4da66d5dbf
@ -49,6 +49,7 @@
|
||||
#include <ctype.h>
|
||||
#include <limits.h>
|
||||
#include <qdebug.h>
|
||||
#include "generator.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -3319,9 +3320,7 @@ CodeMarker *Doc::quoteFromFile(const Location &location,
|
||||
|
||||
QString dirPath = QFileInfo(filePath).path();
|
||||
CodeMarker *marker = CodeMarker::markerForFileName(fileName);
|
||||
quoter.quoteFromFile(userFriendlyFilePath,
|
||||
code,
|
||||
marker->markedUpCode(code, 0, location));
|
||||
quoter.quoteFromFile(userFriendlyFilePath, code, marker->markedUpCode(code, 0, location));
|
||||
return marker;
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include "qmlmarkupvisitor.h"
|
||||
#include "text.h"
|
||||
#include "tree.h"
|
||||
#include "generator.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -128,12 +129,12 @@ QString JsCodeMarker::addMarkUp(const QString &code,
|
||||
QQmlJS::AST::Node::accept(ast, &visitor);
|
||||
output = visitor.markedUpCode();
|
||||
} else {
|
||||
location.warning(tr("Unable to parse JavaScript: \"%1\" at line %2, column %3").arg(
|
||||
location.warning(location.fileName() +
|
||||
tr("Unable to parse JavaScript: \"%1\" at line %2, column %3").arg(
|
||||
parser.errorMessage()).arg(parser.errorLineNumber()).arg(
|
||||
parser.errorColumnNumber()));
|
||||
output = protect(code);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
|
@ -47,6 +47,7 @@
|
||||
#include "qmlmarkupvisitor.h"
|
||||
#include "text.h"
|
||||
#include "tree.h"
|
||||
#include "generator.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -205,8 +206,8 @@ static void replaceWithSpace(QString &str, int idx, int n)
|
||||
src/declarative/qml/qqmlscriptparser.cpp then modified to
|
||||
return a list of removed pragmas.
|
||||
|
||||
Searches for ".pragma <value>" declarations within \a script.
|
||||
Currently supported pragmas are: library
|
||||
Searches for ".pragma <value>" or ".import <stuff>" declarations
|
||||
in \a script. Currently supported pragmas are: library
|
||||
*/
|
||||
QList<QQmlJS::AST::SourceLocation> QmlCodeMarker::extractPragmas(QString &script)
|
||||
{
|
||||
@ -229,13 +230,22 @@ QList<QQmlJS::AST::SourceLocation> QmlCodeMarker::extractPragmas(QString &script
|
||||
|
||||
token = l.lex();
|
||||
|
||||
if (token != QQmlJSGrammar::T_IDENTIFIER ||
|
||||
l.tokenStartLine() != startLine ||
|
||||
script.mid(l.tokenOffset(), l.tokenLength()) != pragma)
|
||||
if (token != QQmlJSGrammar::T_PRAGMA && token != QQmlJSGrammar::T_IMPORT)
|
||||
return removed;
|
||||
|
||||
int endOffset = 0;
|
||||
while (startLine == l.tokenStartLine()) {
|
||||
endOffset = l.tokenLength() + l.tokenOffset();
|
||||
token = l.lex();
|
||||
}
|
||||
replaceWithSpace(script, startOffset, endOffset - startOffset);
|
||||
removed.append(QQmlJS::AST::SourceLocation(startOffset,
|
||||
endOffset - startOffset,
|
||||
startLine,
|
||||
startColumn));
|
||||
#if 0
|
||||
token = l.lex();
|
||||
|
||||
if (Generator::debugging())
|
||||
qDebug() << " third token";
|
||||
if (token != QQmlJSGrammar::T_IDENTIFIER ||
|
||||
l.tokenStartLine() != startLine)
|
||||
return removed;
|
||||
@ -255,6 +265,7 @@ QList<QQmlJS::AST::SourceLocation> QmlCodeMarker::extractPragmas(QString &script
|
||||
startLine, startColumn));
|
||||
} else
|
||||
return removed;
|
||||
#endif
|
||||
}
|
||||
return removed;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user