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