src: remove old metamodel and nitc
[nit.git] / src / metamodel / virtualtype.nit
diff --git a/src/metamodel/virtualtype.nit b/src/metamodel/virtualtype.nit
deleted file mode 100644 (file)
index c8bad3a..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2006-2008 Floréal Morandat <morandat@lirmm.fr>
-# Copyright 2008 Jean Privat <jean@pryen.org>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Virtual type (property of type type)
-module virtualtype
-
-import type_formal
-
-redef class MMGlobalProperty
-       # Is self a virtual type
-       fun is_virtual_type: Bool do return intro isa MMTypeProperty
-end
-
-# Virtual type properties
-abstract class MMTypeProperty
-       super MMLocalProperty
-       # The virtual static type associated
-       fun stype_for(recv: MMType): nullable MMVirtualType
-       do
-               var prop = recv.local_class[global]
-               assert prop isa MMTypeProperty
-               return prop.real_stype_for(recv)
-       end
-
-       # Cached results of stype
-       var _stypes_cache: HashMap[MMType, MMVirtualType] = new HashMap[MMType, MMVirtualType]
-
-       private fun real_stype_for(recv: MMType): nullable MMVirtualType
-       do
-               # If the signature is not build: Circular definition
-               if signature == null then return null
-
-               if _stypes_cache.has_key(recv) then return _stypes_cache[recv]
-
-               var res = new MMVirtualType(self, recv)
-               _stypes_cache[recv] = res
-
-               return res
-       end
-end
-
-class MMVirtualType
-       super MMTypeFormal
-       # The property associed
-       readable var _property: MMTypeProperty
-
-       # The receiver type
-       readable var _recv: MMType
-
-       protected init(p: MMTypeProperty, recv: MMType)
-       do
-               super(p.name, p.signature_for(recv).return_type)
-               _property = p
-               _recv = recv
-       end
-
-       redef fun mmmodule do return _recv.mmmodule
-
-       redef fun for_module(mod)
-       do
-               if mod == mmmodule then return self
-               return adapt_to(recv.for_module(mod))
-       end
-
-       redef fun not_for_self
-       do
-               return bound.not_for_self
-       end
-
-       redef fun adapt_to(recv)
-       do
-               return property.stype_for(recv).as(not null)
-       end
-end
-
-redef class MMLocalClass
-       fun virtual_type(s: Symbol): MMGlobalProperty
-       do
-               var prop = get_property_by_name(s)
-               if prop.is_virtual_type then
-                       return prop
-               end
-               abort
-       end
-
-       # Select a virtual type property by its name
-       fun select_virtual_type(name: Symbol): MMTypeProperty
-       do
-               var gp = virtual_type(name)
-               var res = self[gp]
-               assert res isa MMTypeProperty
-               return res
-       end
-end