-944784a93cf89d3a238e5607c993ea5f18f99c12
+f4a224ec481957ca4f14d0e8cc4fe59cc95b3a49
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
std::string ret = this->read_identifier();
if (ret == "?")
ret.clear();
- else if (!Lex::is_exported_name(ret))
- ret = '.' + this->package_->pkgpath() + '.' + ret;
return ret;
}
// mangled name which includes only ASCII characters.
bool
-Lex::is_exported_name(const std::string& name)
+Lex::is_exported_mangled_name(const std::string& name)
{
unsigned char c = name[0];
if (c != '.')
}
}
+// Return whether the identifier NAME should be exported. NAME is a
+// an unmangled utf-8 string and may contain non-ASCII characters.
+
+bool
+Lex::is_exported_name(const std::string& name)
+{
+ unsigned int uchar;
+ if (Lex::fetch_char(name.c_str(), &uchar) != 0)
+ return Lex::is_unicode_letter(uchar) && Lex::is_unicode_uppercase(uchar);
+ return false;
+}
+
// Return whether the identifier NAME contains an invalid character.
// This is based on how we handle invalid characters in
// gather_identifier.
// Return whether the identifier NAME should be exported. NAME is a
// mangled name which includes only ASCII characters.
static bool
+ is_exported_mangled_name(const std::string& name);
+
+ // Return whether the identifier NAME should be exported. NAME is
+ // an unmangled utf-8 string and may contain non-ASCII characters.
+ static bool
is_exported_name(const std::string& name);
// Return whether the identifier NAME is invalid. When we see an