mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-27 01:34:02 +00:00
objects with no ancestor are not implicitely final
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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...
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -341,7 +341,7 @@ type
|
||||
float*: float64
|
||||
imag*: float64
|
||||
|
||||
TPyObject*{.pure.} = object
|
||||
TPyObject*{.pure, inheritable.} = object
|
||||
ob_refcnt*: int
|
||||
ob_type*: PPyTypeObject
|
||||
|
||||
|
||||
Reference in New Issue
Block a user