nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
metamodel: rename 'universal' to 'enum'
[nit.git]
/
src
/
metamodel
/
genericity.nit
diff --git
a/src/metamodel/genericity.nit
b/src/metamodel/genericity.nit
index
112212e
..
4de61f7
100644
(file)
--- a/
src/metamodel/genericity.nit
+++ b/
src/metamodel/genericity.nit
@@
-23,14
+23,14
@@
intrude import inheritance
redef class MMLocalClass
# The pos-th formal type parameter
redef class MMLocalClass
# The pos-th formal type parameter
- meth get_formal(pos: Int): MMTypeFormalParameter
+ fun get_formal(pos: Int): MMTypeFormalParameter
do
return formals_types[pos]
end
# Register a new formal type
# Called in order during the building of the class
do
return formals_types[pos]
end
# Register a new formal type
# Called in order during the building of the class
- meth register_formal(f: MMTypeFormalParameter)
+ fun register_formal(f: MMTypeFormalParameter)
do
assert f.def_class == self
assert f.position == _formals_types.length
do
assert f.def_class == self
assert f.position == _formals_types.length
@@
-38,10
+38,10
@@
redef class MMLocalClass
end
# All the insanciated types of the class
end
# All the insanciated types of the class
- attr _types: Array[MMTypeGeneric] = new Array[MMTypeGeneric]
+ var _types: Array[MMTypeGeneric] = new Array[MMTypeGeneric]
# Instanciate a type from the generic class
# Instanciate a type from the generic class
- meth get_instantiate_type(t: Array[MMType]): MMType
+ fun get_instantiate_type(t: Array[MMType]): MMType
do
for g in _types do
if g.params_equals(t) then return g
do
for g in _types do
if g.params_equals(t) then return g
@@
-52,11
+52,11
@@
redef class MMLocalClass
end
# The formal types of the class
end
# The formal types of the class
- attr _formals_types: Array[MMTypeFormalParameter] = new Array[MMTypeFormalParameter]
+ var _formals_types: Array[MMTypeFormalParameter] = new Array[MMTypeFormalParameter]
# Return the definition formal types for the class
# Import them from the intro class if needed
# Return the definition formal types for the class
# Import them from the intro class if needed
- private meth formals_types: Array[MMTypeFormalParameter]
+ private fun formals_types: Array[MMTypeFormalParameter]
do
if _formals_types.is_empty then
assert not self isa MMConcreteClass
do
if _formals_types.is_empty then
assert not self isa MMConcreteClass
@@
-71,47
+71,47
@@
redef class MMLocalClass
for i in [0..arity[ do
var oft = global.intro.get_formal(i)
var ft = _formals_types[i]
for i in [0..arity[ do
var oft = global.intro.get_formal(i)
var ft = _formals_types[i]
- ft.bound = oft.bound.for_module(module)
+ ft.bound = oft.bound.for_module(mmmodule)
end
end
return _formals_types
end
end
end
return _formals_types
end
- redef meth get_type
+ redef fun get_type
do
if _base_type_cache == null and is_generic then
_base_type_cache = get_instantiate_type(formals_types)
do
if _base_type_cache == null and is_generic then
_base_type_cache = get_instantiate_type(formals_types)
- return _base_type_cache
+ return _base_type_cache.as(not null)
else
return super
end
end
# Is the class a generic one?
else
return super
end
end
# Is the class a generic one?
- meth is_generic: Bool do return arity > 0
+ fun is_generic: Bool do return arity > 0
end
redef class MMType
# TODO: IS this useful?
end
redef class MMType
# TODO: IS this useful?
- meth is_generic: Bool is abstract
+ fun is_generic: Bool is abstract
end
redef class MMTypeFormal
end
redef class MMTypeFormal
- redef meth is_generic do return _bound.is_generic
+ redef fun is_generic do return _bound.is_generic
end
redef class MMTypeSimpleClass
end
redef class MMTypeSimpleClass
- redef meth is_generic do return false
+ redef fun is_generic do return false
end
class MMTypeGeneric
end
class MMTypeGeneric
-special MMTypeClass
+ super MMTypeClass
# Formal arguments
# Formal arguments
- readable attr _params: Array[MMType]
+ readable var _params: Array[MMType]
- redef meth is_generic do return true
+ redef fun is_generic do return true
- redef meth is_supertype(t)
+ redef fun is_supertype(t)
do
if t.local_class.cshe <= _local_class then
var u = t.upcast_for(_local_class)
do
if t.local_class.cshe <= _local_class then
var u = t.upcast_for(_local_class)
@@
-122,7
+122,7
@@
special MMTypeClass
return false
end
return false
end
- redef meth upcast_for(c)
+ redef fun upcast_for(c)
do
var t = super
if t != self then
do
var t = super
if t != self then
@@
-131,10
+131,10
@@
special MMTypeClass
return t
end
return t
end
- redef meth for_module(mod)
+ redef fun for_module(mod)
do
var t: MMType = self
do
var t: MMType = self
- if module != mod then
+ if mmmodule != mod then
var parms = new Array[MMType]
for p in _params do
parms.add(p.for_module(mod))
var parms = new Array[MMType]
for p in _params do
parms.add(p.for_module(mod))
@@
-142,11
+142,10
@@
special MMTypeClass
var b = _local_class.for_module(mod)
t = b.get_instantiate_type(parms)
end
var b = _local_class.for_module(mod)
t = b.get_instantiate_type(parms)
end
- assert t != null
return t
end
return t
end
- redef meth adapt_to(r)
+ redef fun adapt_to(r)
do
var rv = new Array[MMType]
for i in _params do
do
var rv = new Array[MMType]
for i in _params do
@@
-156,14
+155,12
@@
special MMTypeClass
return l
end
return l
end
- private meth params_equals(t: Array[MMType]): Bool
+ private fun params_equals(t: Array[MMType]): Bool
do
if t.length != _params.length then
return false
end
for i in [0..t.length[ do
do
if t.length != _params.length then
return false
end
for i in [0..t.length[ do
- assert _params[i] != null
- assert t[i] != null
if _params[i] != t[i] then
return false
end
if _params[i] != t[i] then
return false
end
@@
-171,14
+168,14
@@
special MMTypeClass
return true
end
return true
end
- redef meth to_s
+ redef fun to_s
do
return "{super}[{_params.join(", ")}]"
end
# Is self a subtype of t?
# Require that t.local_class = self.local_class
do
return "{super}[{_params.join(", ")}]"
end
# Is self a subtype of t?
# Require that t.local_class = self.local_class
- private meth is_subtype(t: MMTypeGeneric) : Bool
+ private fun is_subtype(t: MMTypeGeneric) : Bool
do
for i in [0.._params.length[
do
do
for i in [0.._params.length[
do
@@
-197,44
+194,42
@@
special MMTypeClass
end
class MMTypeFormalParameter
end
class MMTypeFormalParameter
-special MMTypeFormal
+ super MMTypeFormal
# The class where self is defined
# The class where self is defined
- readable attr _def_class: MMLocalClass
+ readable var _def_class: MMLocalClass
# The position is self in def_class
# The position is self in def_class
- readable attr _position: Int
+ readable var _position: Int
- redef meth module do return _def_class.module
+ redef fun mmmodule do return _def_class.mmmodule
- redef meth for_module(mod)
+ redef fun for_module(mod)
do
var t: MMType = self
do
var t: MMType = self
- if module != mod then
+ if mmmodule != mod then
t = mod[_def_class.global].get_formal(position)
end
t = mod[_def_class.global].get_formal(position)
end
- assert t != null
return t
end
return t
end
- redef meth upcast_for(c) do return self
+ redef fun upcast_for(c) do return _bound.upcast_for(c)
- meth bound=(t: MMType)
+ fun bound=(t: MMType)
do
assert _bound == null
_bound = t
end
do
assert _bound == null
_bound = t
end
- redef meth adapt_to(r)
+ redef fun adapt_to(r)
do
r = r.direct_type
var old_r = r.upcast_for(def_class)
#if not old_r isa MMTypeGeneric then
do
r = r.direct_type
var old_r = r.upcast_for(def_class)
#if not old_r isa MMTypeGeneric then
- # print "adapt {self}'{def_class}'{self.module} to {r}'{r.module}"
- # print " old_r = {old_r}'{old_r.module}"
+ # print "adapt {self}'{def_class}'{self.mmmodule} to {r}'{r.mmmodule}"
+ # print " old_r = {old_r}'{old_r.mmmodule}"
#end
assert old_r isa MMTypeGeneric
var reduct = old_r.params[position]
#end
assert old_r isa MMTypeGeneric
var reduct = old_r.params[position]
- assert reduct != null
return reduct
end
return reduct
end
@@
-246,7
+241,6
@@
special MMTypeFormal
init(n: Symbol, p: Int, intro: MMLocalClass)
do
init(n: Symbol, p: Int, intro: MMLocalClass)
do
- assert n != null
super(n, null)
_position = p
_def_class = intro
super(n, null)
_position = p
_def_class = intro
@@
-254,7
+248,7
@@
special MMTypeFormal
end
redef class MMTypeNone
end
redef class MMTypeNone
- redef meth is_generic do return false
- redef meth for_module(mod) do return self
- redef meth adapt_to(r) do return self
+ redef fun is_generic do return false
+ redef fun for_module(mod) do return self
+ redef fun adapt_to(r) do return self
end
end