Sign in to follow this  
Jason Goepel

GetDeclarationsStr

Recommended Posts

Jason Goepel    797

I'm not sure if this is a bug or not, but when I call asIScriptFunction::GetDeclaration on a constructor I am getting a return type, contrary to some comments in the code as_scriptfunction.cpp, line 480.

// Don't add the return type for constructors and destructors
if( !(returnType.GetTokenType() == ttVoid && 
      objectType && 
      (name == objectType->name || (name.GetLength() > 0 && name[0] == '~'))) ) 
{
    str = returnType.Format();
    str += " ";
} 

The problem seems to be that "name" is always "_beh_0_", which is certainly not going to equal objectType->name.  This name is set here when registering a behaviour, as_scriptengine.cpp, line 1811:

asCBuilder bld(this, 0);
int r = bld.ParseFunctionDeclaration(objectType, decl, &func, true, &internal.paramAutoHandles, &internal.returnAutoHandle);
if( r < 0 )
    return ConfigError(asINVALID_DECLARATION, "RegisterObjectBehaviour", objectType->name.AddressOf(), decl);
func.name.Format("_beh_%d_", behaviour);

These two sections of code seem inconsistent.  If I had to pick, I would prefer constructors to have their names equal the names of the objects which they construct.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this