diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h
index ac452311fac22948ac9f04695fd96c04ec4544e6..d29342b30a69ee629ecadc08da930376e65bd83d 100644
--- a/src/shared/cplusplus/AST.h
+++ b/src/shared/cplusplus/AST.h
@@ -711,6 +711,9 @@ public:
     SpecifierAST *cv_qualifier_seq;
     ExceptionSpecificationAST *exception_specification;
 
+public: // annotations
+    Function *symbol;
+
 public:
     virtual unsigned firstToken() const;
     virtual unsigned lastToken() const;
diff --git a/src/shared/cplusplus/CheckDeclarator.cpp b/src/shared/cplusplus/CheckDeclarator.cpp
index 13120fec589265f83e4989b174a00f10c72e9779..beb2ed0bca769f0f556ec2a6076a4a2d73926cf3 100644
--- a/src/shared/cplusplus/CheckDeclarator.cpp
+++ b/src/shared/cplusplus/CheckDeclarator.cpp
@@ -158,6 +158,7 @@ bool CheckDeclarator::visit(NestedDeclaratorAST *ast)
 bool CheckDeclarator::visit(FunctionDeclaratorAST *ast)
 {
     Function *fun = control()->newFunction(ast->firstToken());
+    ast->symbol = fun;
     fun->setReturnType(_fullySpecifiedType);
 
     if (ast->parameters) {