diff --git a/compiler2/ttcn3/AST_ttcn3.cc b/compiler2/ttcn3/AST_ttcn3.cc
index 9f313c473e81b49d7a83e32def6c035e466c65c5..f3f13e321bf03cb3cde763e4fd0d8cbd246b8b4c 100644
--- a/compiler2/ttcn3/AST_ttcn3.cc
+++ b/compiler2/ttcn3/AST_ttcn3.cc
@@ -735,9 +735,8 @@ namespace Ttcn {
     Free(expr_cache);
   }
   
-  bool Reference::has_parameters()
+  bool Reference::has_parameters() const
   {
-    get_refd_assignment(); // make sure the reference is checked
     return params_checked ? parlist != NULL : params != NULL;
   }
 
@@ -1005,11 +1004,11 @@ namespace Ttcn {
 
   bool Reference::chk_activate_argument()
   {
+    Common::Assignment *t_ass = get_refd_assignment();
     if (!has_parameters()) {
       error("Reference with actual parameter list was expected in the argument");
       return false;
     }
-    Common::Assignment *t_ass = get_refd_assignment();
     if (!t_ass) return false;
     if (t_ass->get_asstype() != Common::Assignment::A_ALTSTEP) {
       error("Reference to an altstep was expected in the argument instead of "
diff --git a/compiler2/ttcn3/AST_ttcn3.hh b/compiler2/ttcn3/AST_ttcn3.hh
index c672555a1e225af3685abc6fd946e5a6dd77bc9c..2d7039ac1dd358e8abb3fa70180455deabd9a681 100644
--- a/compiler2/ttcn3/AST_ttcn3.hh
+++ b/compiler2/ttcn3/AST_ttcn3.hh
@@ -364,7 +364,7 @@ namespace Ttcn {
     Reference(Identifier *p_modid, Identifier *p_id,
               ParsedActualParameters *p_params, reftype_t p_reftype = REF_BASIC);
     ~Reference();
-    virtual bool has_parameters();
+    virtual bool has_parameters() const;
     virtual Reference *clone() const;
     virtual void set_fullname(const string& p_fullname);
     virtual void set_my_scope(Scope* p_scope);