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 redef meth is_valid
do return _bound
!= null and _bound
.is_valid
33 # The name of the type
34 readable attr _name
: Symbol
37 meth bound
: MMType do return _bound
.as(not null)
38 attr _bound
: nullable MMType
40 redef meth
<(t
) do return t
== self or t
.is_supertype
(bound
)
41 redef meth is_supertype
(t
) do return _bound
.is_supertype
(t
)
42 redef meth is_nullable
do return _bound
.is_nullable
43 redef meth direct_type
do return _bound
.direct_type
44 redef meth local_class
do return _bound
.local_class
46 redef meth to_s
do return _name
.to_s
48 protected init(name
: Symbol, bound
: nullable MMType)