1 # coding: utf-8
2 # frozen_string_literal: true
3
4
5
6 module Umu
7
8 module AbstractSyntax
9
10 module Core
11
12 module Expression
13
14 module Unary
15
16 class Class < Abstract
17 alias class_sym obj
18
19
20 def initialize(loc, class_sym)
21 ASSERT.kind_of class_sym, ::Symbol
22
23 super
24 end
25
26
27 def to_s
28 format "&%s", self.class_sym
29 end
30
31
32 private
33
34 def __evaluate__(env, _event)
35 class_signat = env.ty_lookup self.class_sym, self.loc
36 ASSERT.kind_of class_signat, ECTSC::Base
37
38 VC.make_class class_signat
39 end
40 end
41
42 end # Umu::AbstractSyntax::Core::Expression::Unary
43
44
45 module_function
46
47 def make_class(loc, class_sym)
48 ASSERT.kind_of loc, LOC::Entry
49 ASSERT.kind_of class_sym, ::Symbol
50
51 Unary::Class.new(loc, class_sym).freeze
52 end
53
54 end # Umu::AbstractSyntax::Core::Expression
55
56 end # Umu::AbstractSyntax::Core
57
58 end # Umu::AbstractSyntax
59
60 end # Umu