diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp index 68d2e2b809aa1be50c20787c9c7d242635ff845f..0328a7c9a22d6de56f006e071d6500631c3168c9 100644 --- a/src/libs/qmljs/qmljsbind.cpp +++ b/src/libs/qmljs/qmljsbind.cpp @@ -282,7 +282,7 @@ bool Bind::visit(FunctionDeclaration *ast) //if (_currentObjectValue->property(ast->name->asString(), 0)) // return false; - ASTFunctionValue *function = new ASTFunctionValue(ast, &_engine); + ASTFunctionValue *function = new ASTFunctionValue(ast, _doc, &_engine); _currentObjectValue->setProperty(ast->name->asString(), function); // build function scope diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index c111768cc5f189a45992501bea6d2d0642a998ad..d8b4d2c62333c041eae06af8d03e4877d4f1147e 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -2959,8 +2959,8 @@ const Value *ASTVariableReference::value(Context *context) const return check(_ast->expression); } -ASTFunctionValue::ASTFunctionValue(FunctionDeclaration *ast, Engine *engine) - : FunctionValue(engine), _ast(ast) +ASTFunctionValue::ASTFunctionValue(FunctionDeclaration *ast, const Document *doc, Engine *engine) + : FunctionValue(engine), _doc(doc), _ast(ast) { setPrototype(engine->functionPrototype()); @@ -3007,6 +3007,14 @@ bool ASTFunctionValue::isVariadic() const return true; } +bool ASTFunctionValue::getSourceLocation(QString *fileName, int *line, int *column) const +{ + *fileName = _doc->fileName(); + *line = _ast->identifierToken.startLine; + *column = _ast->identifierToken.startColumn; + return true; +} + QmlPrototypeReference::QmlPrototypeReference(UiQualifiedId *qmlTypeName, const QmlJS::Document *doc, Engine *engine) : Reference(engine), diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h index 498126555490b87391f8bf9ed509e9563644d2ea..0ce977bdc3611cede786fd802b42803237abf827 100644 --- a/src/libs/qmljs/qmljsinterpreter.h +++ b/src/libs/qmljs/qmljsinterpreter.h @@ -769,10 +769,11 @@ private: class QMLJS_EXPORT ASTFunctionValue: public FunctionValue { AST::FunctionDeclaration *_ast; + const Document *_doc; QList<NameId *> _argumentNames; public: - ASTFunctionValue(AST::FunctionDeclaration *ast, Engine *engine); + ASTFunctionValue(AST::FunctionDeclaration *ast, const Document *doc, Engine *engine); virtual ~ASTFunctionValue(); AST::FunctionDeclaration *ast() const; @@ -782,6 +783,8 @@ public: virtual const Value *argument(int) const; virtual QString argumentName(int index) const; virtual bool isVariadic() const; + + virtual bool getSourceLocation(QString *fileName, int *line, int *column) const; }; class QMLJS_EXPORT ASTPropertyReference: public Reference