1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Copyright 2004-2008 Jean Privat <jean@pryen.org>
4 # Copyright 2006-2008 Floréal Morandat <morandat@lirmm.fr>
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
24 # The type a indirect type refers to
25 meth direct_type
: MMType do return self
28 # Formal types are named indirect types
31 # The name of the type
32 readable attr _name
: Symbol
35 readable attr _bound
: MMType
37 redef meth
<(t
) do return t
!= null and (t
== self or t
.is_supertype
(_bound
))
38 redef meth is_supertype
(t
) do return _bound
.is_supertype
(t
)
39 redef meth direct_type
do return _bound
.direct_type
40 redef meth local_class
42 if _bound
== null then return null
43 return _bound
.local_class
46 redef meth select_property
(g
)
51 return _bound
.select_property
(g
)
55 redef meth to_s
do return _name
.to_s
57 protected init(name
: Symbol, bound
: MMType)