The script version is the newest one, I check out today.
The assert failed line is at: as_compiler.cpp, line: 498
I don't have compile errors.
The actual class registeration is very complicate, I believe the bug is this, if not, let me know, I will try to reproduce it with a simple version of code.
nRet = (asERetCodes) pScriptEngine->RegisterObjectBehaviour("A", asBEHAVE_INDEX , "Value &f(int)", asMETHODPR(A, operator[], (int ), Value &), asCALL_THISCALL);
assert( nRet >= 0 );
nRet = (asERetCodes) pScriptEngine->RegisterObjectBehaviour("A[]", asBEHAVE_INDEX , "A f( int )", asMETHODPR(AArray, operator[], (int ), A), asCALL_THISCALL);
assert( nRet >= 0 );
nRet = (asERetCodes) pScriptEngine->RegisterObjectBehaviour("A[][]", asBEHAVE_INDEX , "A[] f(int)", asMETHODPR(AArrayArray, operator[], (int ), AArray), asCALL_THISCALL);
assert( nRet >= 0 );
All the class A, AArray, AArrayArray are registerred as asOBJ_VALUE | asOBJ_APP_CLASS_CDA.
The registeration without any error. The build on the script which use sentence:
A[][] twoD; twoD[1][1][1] = "abcd";
I am not sure if this sentence got error, but the build on the script failed on the above position..
If I register as:
nRet = (asERetCodes) pScriptEngine->RegisterObjectBehaviour("A", asBEHAVE_INDEX , "Value &f(int)", asMETHODPR(A, operator[], (int ), Value &), asCALL_THISCALL);
assert( nRet >= 0 );
nRet = (asERetCodes) pScriptEngine->RegisterObjectBehaviour("A[]", asBEHAVE_INDEX , "A &f( int )", asMETHODPR(AArray, operator[], (int ), A), asCALL_THISCALL);
assert( nRet >= 0 );
nRet = (asERetCodes) pScriptEngine->RegisterObjectBehaviour("A[][]", asBEHAVE_INDEX , "A[] f(int)", asMETHODPR(AArrayArray, operator[], (int ), AArray), asCALL_THISCALL);
assert( nRet >= 0 );
The build error is gone. The only difference is to return a reference on A[] index or on A[][] index.
Any ideas?