diff --git a/src/language.yacc b/src/language.yacc
index 36ac89761d26d3eae5f64d46166b9ae6f00a44f2..3e203f740131c7ae2135e42f66ac1d3706ca91b6 100644
--- a/src/language.yacc
+++ b/src/language.yacc
@@ -3933,7 +3933,7 @@ inherit_specifier: string_or_identifier TOK_COLON_COLON
     if (e == -1) {
       inherit_state = state;
       inherit_depth = depth;
-      if ($1->u.sval.u.string == this_program_string) {
+      if ($1->u.sval.u.string == this_program_string || $1->u.sval.u.string == this_string) {
         inherit_state = Pike_compiler;
         inherit_depth = 0;
         e = 0;
diff --git a/src/program.c b/src/program.c
index 96bff847e91768055acb263c6aea66ae34253945..b024243f6ad0bd8b5febcb14e8da84a89fde0123 100644
--- a/src/program.c
+++ b/src/program.c
@@ -156,8 +156,8 @@ static const int lock_depth = 1;
 #define DECLARE
 #include "compilation.h"
 
-struct pike_string *this_program_string;
-static struct pike_string *this_string, *this_function_string;
+struct pike_string *this_program_string, *this_string;
+static struct pike_string *this_function_string;
 static struct pike_string *UNDEFINED_string;
 
 /* Common compiler subsystems */
diff --git a/src/program.h b/src/program.h
index 65cba84b4afd75a5d589e94e49d4b4bdcdd0ca65..5a3d6d6d13b5358fc3ff5dd6f35c3e02f8923d54 100644
--- a/src/program.h
+++ b/src/program.h
@@ -50,6 +50,7 @@ PMOD_EXPORT extern struct program_state * Pike_compiler;
   } while(0)
 
 extern struct pike_string *this_program_string;
+extern struct pike_string *this_string;
 
 /* Common compiler subsystems */
 extern struct pike_string *parser_system_string;