I made the following test and it worked as expected:
//// Tests constant properties to see if they can be overwritten//// Test author: Andreas Jonsson//#include "angelscript.h"#include <stdio.h>#include <stddef.h>#include <string.h>#define TESTNAME "TestConstProperty"class COutStream : public asIOutputStream{public: void AS_CALL Write(const char *text) { printf(text); }};static const char *script ="Obj myObj; \n""float myFloat; \n"" \n""void Init() \n""{ \n"" g_Obj = myObj; \n"" g_Float = myFloat; \n""} \n";bool TestConstProperty(){ bool fail = false; asIScriptEngine *engine = asCreateScriptEngine(ANGELSCRIPT_VERSION); engine->RegisterObjectType("Obj", sizeof(int), asOBJ_PRIMITIVE); engine->RegisterObjectProperty("Obj", "int val", 0); int constantProperty = 0; engine->RegisterGlobalProperty("const Obj g_Obj", &constantProperty); float constantFloat = 0; engine->RegisterGlobalProperty("const float g_Float", &constantFloat); COutStream out; engine->AddScriptSection(0, TESTNAME, script, strlen(script)); engine->Build(0, &out); engine->Release(); // Success return fail;}
The output was:
TestConstProperty (6, 9) : Error : Reference is read-onlyTestConstProperty (7, 11) : Error : Reference is read-only
Note this was made with 1.9.0 WIP 2, which is not yet released. However, I haven't made any changes that I know of in the way constants are treated or the way properties are registered.
Can you verify the problem once more for me?