From ae214db0fc02b76256013874b7551fec187e10d0 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Wed, 26 Aug 2015 10:58:03 +0200 Subject: [PATCH] Change base type for 'Type' to 'Object' refs #9076 --- lib/base/type.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/base/type.cpp b/lib/base/type.cpp index 4d61da62b..67ca66f3e 100644 --- a/lib/base/type.cpp +++ b/lib/base/type.cpp @@ -138,7 +138,7 @@ String TypeType::GetName(void) const Type::Ptr TypeType::GetBaseType(void) const { - return Type::Ptr(); + return Object::TypeInstance; } int TypeType::GetAttributes(void) const @@ -149,15 +149,19 @@ int TypeType::GetAttributes(void) const int TypeType::GetFieldId(const String& name) const { if (name == "prototype") - return 0; + return GetBaseType()->GetFieldCount() + 0; else if (name == "base") - return 1; + return GetBaseType()->GetFieldCount() + 1; - return -1; + return GetBaseType()->GetFieldId(name); } Field TypeType::GetFieldInfo(int id) const { + int real_id = id - GetBaseType()->GetFieldCount(); + if (real_id < 0) + return GetBaseType()->GetFieldInfo(id); + if (id == 0) return Field(0, "Object", "prototype", NULL, 0, 0); else if (id == 1) @@ -168,7 +172,7 @@ Field TypeType::GetFieldInfo(int id) const int TypeType::GetFieldCount(void) const { - return 2; + return GetBaseType()->GetFieldCount() + 2; } ObjectFactory TypeType::GetFactory(void) const