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