objects with no ancestor are not implicitely final

This commit is contained in:
Araq
2012-08-24 17:33:04 +02:00
parent afcff024a1
commit d17caa86e8
15 changed files with 44 additions and 22 deletions

View File

@@ -1057,7 +1057,7 @@ type
charset: set[char] ## if kind == tkCharSet
index: int ## if kind == tkBackref
TPegLexer = object ## the lexer object.
TPegLexer {.inheritable.} = object ## the lexer object.
bufpos: int ## the current position within the buffer
buf: cstring ## the buffer itself
LineNumber: int ## the current line number

View File

@@ -58,7 +58,7 @@ type
Features: seq[Feature] # Read-Only
PNode* = ref Node
Node = object
Node = object of TObject
attributes*: seq[PAttr]
childNodes*: seq[PNode]
FLocalName: string # Read-only

View File

@@ -171,9 +171,12 @@ proc `..`*[T](b: T): TSlice[T] {.noSideEffect, inline.} =
proc contains*[T](s: TSlice[T], value: T): bool {.noSideEffect, inline.} =
result = value >= s.a and value <= s.b
when not defined(niminheritable):
{.pragma: inheritable.}
when not defined(EcmaScript) and not defined(NimrodVM):
type
TGenericSeq {.compilerproc, pure.} = object
TGenericSeq {.compilerproc, pure, inheritable.} = object
len, reserved: int
PGenericSeq {.exportc.} = ptr TGenericSeq
# len and space without counting the terminating zero:
@@ -197,7 +200,7 @@ type
## is an int type ranging from one to the maximum value
## of an int. This type is often useful for documentation and debugging.
TObject* {.exportc: "TNimObject".} =
TObject* {.exportc: "TNimObject", inheritable.} =
object ## the root of Nimrod's object hierarchy. Objects should
## inherit from TObject or one of its descendants. However,
## objects that have no ancestor are allowed.

View File

@@ -113,7 +113,7 @@ type
PChunk = ptr TBaseChunk
PBigChunk = ptr TBigChunk
PSmallChunk = ptr TSmallChunk
TBaseChunk {.pure.} = object
TBaseChunk {.pure, inheritable.} = object
prevSize: int # size of previous chunk; for coalescing
size: int # if < PageSize it is a small chunk
used: bool # later will be optimized into prevSize...

View File

@@ -107,7 +107,7 @@ type
g_class*: PGTypeClass
PGTypeInterface* = ptr TGTypeInterface
TGTypeInterface*{.pure.} = object
TGTypeInterface*{.pure, inheritable.} = object
g_type*: GType
g_instance_type*: GType
@@ -993,7 +993,7 @@ proc plugin_complete_interface_info*(plugin: PGTypePlugin,
dynlib: gliblib, importc: "g_type_plugin_complete_interface_info".}
type
PGObject* = ptr TGObject
TGObject*{.pure.} = object
TGObject*{.pure, inheritable.} = object
g_type_instance*: TGTypeInstance
ref_count*: guint
qdata*: PGData
@@ -1006,7 +1006,7 @@ type
TGWeakNotify* = proc (data: gpointer, where_the_object_was: PGObject){.cdecl.}
PGObjectConstructParam* = ptr TGObjectConstructParam
PGObjectClass* = ptr TGObjectClass
TGObjectClass*{.pure.} = object
TGObjectClass*{.pure, inheritable.} = object
g_type_class*: TGTypeClass
construct_properties*: PGSList
constructor*: proc (theType: GType, n_construct_properties: guint,

View File

@@ -341,7 +341,7 @@ type
float*: float64
imag*: float64
TPyObject*{.pure.} = object
TPyObject*{.pure, inheritable.} = object
ob_refcnt*: int
ob_type*: PPyTypeObject