ridl 2.7.1 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.rdoc +1 -1
- data/lib/ridl/delegate.rb +62 -66
- data/lib/ridl/expression.rb +5 -5
- data/lib/ridl/node.rb +172 -212
- data/lib/ridl/parser.rb +1500 -1307
- data/lib/ridl/parser.ry +1 -3
- data/lib/ridl/runner.rb +82 -50
- data/lib/ridl/type.rb +20 -15
- data/lib/ridl/version.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be5b79c10b3a4bb8e2f0404004ec5201332bef859fc69c636c4750e8eb6f6b13
|
4
|
+
data.tar.gz: 0a23918976bfb9b7db6595409d974fc80be2b5a686f8b40220fa689edd9cc791
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a187e41cc1d3c1d77f79f2ed9e43dccc4b83bc89b98ed4e2771627b2b1b771ba26390624f9abf779e1e2c5c89d7776698045408ca3ceb8ca9f10ecf87c6d0db6
|
7
|
+
data.tar.gz: b90d9a055d29d2de3dcee867df3ca57a26c8ddefd5b77fc3ff1a8a3ab7f645b395d8359c93b8a8a65122b006a76cd9f89815141239cd8e335cf21a78916b89b7
|
data/README.rdoc
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{<img src="https://badge.fury.io/rb/ridl.svg" alt="Gem Version" />}[https://badge.fury.io/rb/ridl]
|
2
|
-
{<img src="https://
|
2
|
+
{<img src="https://github.com/RemedyIT/ridl/workflows/linux/badge.svg" alt="Linux CI" />}[https://github.com/RemedyIT/ridl/actions?query=workflow%3Alinux]
|
3
3
|
{<img src="https://www.codefactor.io/repository/github/remedyit/ridl/badge" alt="CodeFactor" />}[https://www.codefactor.io/repository/github/remedyit/ridl]
|
4
4
|
|
5
5
|
= RIDL Compiler
|
data/lib/ridl/delegate.rb
CHANGED
@@ -205,10 +205,6 @@ class Delegator
|
|
205
205
|
end
|
206
206
|
end
|
207
207
|
|
208
|
-
def cur_parsed_name_scope
|
209
|
-
@cur ? @cur.parsed_name_scope : ''
|
210
|
-
end
|
211
|
-
|
212
208
|
def is_included?(s)
|
213
209
|
@includes.has_key?(s)
|
214
210
|
end
|
@@ -288,8 +284,8 @@ class Delegator
|
|
288
284
|
|
289
285
|
def define_module(name)
|
290
286
|
@cur = @cur.define(IDL::AST::Module, name)
|
291
|
-
@cur.annotations.concat(@annotation_stack)
|
292
|
-
@annotation_stack.
|
287
|
+
@cur.annotations.concat(@annotation_stack)
|
288
|
+
@annotation_stack = IDL::AST::Annotations.new
|
293
289
|
set_last
|
294
290
|
@cur
|
295
291
|
end
|
@@ -307,8 +303,8 @@ class Delegator
|
|
307
303
|
raise "no scoped identifier allowed for template module: #{(global ? '::' : '')+names.join('::')}"
|
308
304
|
end
|
309
305
|
@cur = @cur.define(IDL::AST::TemplateModule, names[0])
|
310
|
-
@cur.annotations.concat(@annotation_stack)
|
311
|
-
@annotation_stack.
|
306
|
+
@cur.annotations.concat(@annotation_stack)
|
307
|
+
@annotation_stack = IDL::AST::Annotations.new
|
312
308
|
set_last
|
313
309
|
@cur
|
314
310
|
end
|
@@ -321,8 +317,8 @@ class Delegator
|
|
321
317
|
define_template_module(*tmp)
|
322
318
|
end
|
323
319
|
params = { :type => type }
|
324
|
-
params[:annotations] = @annotation_stack
|
325
|
-
@annotation_stack.
|
320
|
+
params[:annotations] = @annotation_stack
|
321
|
+
@annotation_stack = IDL::AST::Annotations.new
|
326
322
|
set_last(@cur.define(IDL::AST::TemplateParam, name, params))
|
327
323
|
@cur
|
328
324
|
end
|
@@ -336,8 +332,8 @@ class Delegator
|
|
336
332
|
end
|
337
333
|
params = { :template => template_type.node, :template_params => parameters }
|
338
334
|
mod_inst = @cur.define(IDL::AST::Module, name, params)
|
339
|
-
mod_inst.annotations.concat(@annotation_stack)
|
340
|
-
@annotation_stack.
|
335
|
+
mod_inst.annotations.concat(@annotation_stack)
|
336
|
+
@annotation_stack = IDL::AST::Annotations.new
|
341
337
|
set_last(mod_inst.template.instantiate(mod_inst))
|
342
338
|
@cur
|
343
339
|
end
|
@@ -346,8 +342,8 @@ class Delegator
|
|
346
342
|
params = {}
|
347
343
|
params[:tpl_type] = type
|
348
344
|
params[:tpl_params] = tpl_params || []
|
349
|
-
params[:annotations] = @annotation_stack
|
350
|
-
@annotation_stack.
|
345
|
+
params[:annotations] = @annotation_stack
|
346
|
+
@annotation_stack = IDL::AST::Annotations.new
|
351
347
|
set_last(@cur.define(IDL::AST::TemplateModuleReference, name, params))
|
352
348
|
@cur
|
353
349
|
end
|
@@ -371,8 +367,8 @@ class Delegator
|
|
371
367
|
params[:pseudo] = attrib == :pseudo
|
372
368
|
params[:forward] = false
|
373
369
|
params[:inherits] = inherits
|
374
|
-
params[:annotations] = @annotation_stack
|
375
|
-
@annotation_stack.
|
370
|
+
params[:annotations] = @annotation_stack
|
371
|
+
@annotation_stack = IDL::AST::Annotations.new
|
376
372
|
set_last
|
377
373
|
@cur = @cur.define(IDL::AST::Interface, name, params)
|
378
374
|
end
|
@@ -387,8 +383,8 @@ class Delegator
|
|
387
383
|
params[:component] = component
|
388
384
|
params[:key] = key
|
389
385
|
params[:supports] = supports || []
|
390
|
-
params[:annotations] = @annotation_stack
|
391
|
-
@annotation_stack.
|
386
|
+
params[:annotations] = @annotation_stack
|
387
|
+
@annotation_stack = IDL::AST::Annotations.new
|
392
388
|
set_last
|
393
389
|
@cur = @cur.define(IDL::AST::Home, name, params)
|
394
390
|
end
|
@@ -410,8 +406,8 @@ class Delegator
|
|
410
406
|
params = {}
|
411
407
|
params[:base] = base
|
412
408
|
params[:supports] = supports || []
|
413
|
-
params[:annotations] = @annotation_stack
|
414
|
-
@annotation_stack.
|
409
|
+
params[:annotations] = @annotation_stack
|
410
|
+
@annotation_stack = IDL::AST::Annotations.new
|
415
411
|
set_last
|
416
412
|
@cur = @cur.define(IDL::AST::Component, name, params)
|
417
413
|
end
|
@@ -424,8 +420,8 @@ class Delegator
|
|
424
420
|
def define_connector(name, base = nil)
|
425
421
|
params = {}
|
426
422
|
params[:base] = base
|
427
|
-
params[:annotations] = @annotation_stack
|
428
|
-
@annotation_stack.
|
423
|
+
params[:annotations] = @annotation_stack
|
424
|
+
@annotation_stack = IDL::AST::Annotations.new
|
429
425
|
set_last
|
430
426
|
@cur = @cur.define(IDL::AST::Connector, name, params)
|
431
427
|
end
|
@@ -437,8 +433,8 @@ class Delegator
|
|
437
433
|
|
438
434
|
def define_porttype(name)
|
439
435
|
params = {}
|
440
|
-
params[:annotations] = @annotation_stack
|
441
|
-
@annotation_stack.
|
436
|
+
params[:annotations] = @annotation_stack
|
437
|
+
@annotation_stack = IDL::AST::Annotations.new
|
442
438
|
set_last
|
443
439
|
@cur = @cur.define(IDL::AST::Porttype, name, params)
|
444
440
|
end
|
@@ -453,8 +449,8 @@ class Delegator
|
|
453
449
|
params[:porttype] = porttype
|
454
450
|
params[:type] = type
|
455
451
|
params[:multiple] = multiple
|
456
|
-
params[:annotations] = @annotation_stack
|
457
|
-
@annotation_stack.
|
452
|
+
params[:annotations] = @annotation_stack
|
453
|
+
@annotation_stack = IDL::AST::Annotations.new
|
458
454
|
set_last(@cur.define(IDL::AST::Port, name, params))
|
459
455
|
@cur
|
460
456
|
end
|
@@ -475,8 +471,8 @@ class Delegator
|
|
475
471
|
params[:custom] = attrib == :custom
|
476
472
|
params[:forward] = false
|
477
473
|
params[:inherits] = inherits
|
478
|
-
params[:annotations] = @annotation_stack
|
479
|
-
@annotation_stack.
|
474
|
+
params[:annotations] = @annotation_stack
|
475
|
+
@annotation_stack = IDL::AST::Annotations.new
|
480
476
|
set_last
|
481
477
|
@cur = @cur.define(IDL::AST::Eventtype, name, params)
|
482
478
|
@cur
|
@@ -498,8 +494,8 @@ class Delegator
|
|
498
494
|
params[:custom] = attrib == :custom
|
499
495
|
params[:forward] = false
|
500
496
|
params[:inherits] = inherits
|
501
|
-
params[:annotations] = @annotation_stack
|
502
|
-
@annotation_stack.
|
497
|
+
params[:annotations] = @annotation_stack
|
498
|
+
@annotation_stack = IDL::AST::Annotations.new
|
503
499
|
set_last
|
504
500
|
@cur = @cur.define(IDL::AST::Valuetype, name, params)
|
505
501
|
@cur
|
@@ -518,16 +514,16 @@ class Delegator
|
|
518
514
|
params = {}
|
519
515
|
params[:type] = type
|
520
516
|
params[:visibility] = (public_ ? :public : :private)
|
521
|
-
params[:annotations] = @annotation_stack
|
522
|
-
@annotation_stack.
|
517
|
+
params[:annotations] = @annotation_stack
|
518
|
+
@annotation_stack = IDL::AST::Annotations.new
|
523
519
|
set_last(@cur.define(IDL::AST::StateMember, name, params))
|
524
520
|
@cur
|
525
521
|
end
|
526
522
|
|
527
523
|
def define_valuebox(name, type)
|
528
524
|
params = { :type => type }
|
529
|
-
params[:annotations] = @annotation_stack
|
530
|
-
@annotation_stack.
|
525
|
+
params[:annotations] = @annotation_stack
|
526
|
+
@annotation_stack = IDL::AST::Annotations.new
|
531
527
|
set_last(@cur.define(IDL::AST::Valuebox, name, params))
|
532
528
|
@cur
|
533
529
|
end
|
@@ -536,8 +532,8 @@ class Delegator
|
|
536
532
|
params = {}
|
537
533
|
params[:params] = params_
|
538
534
|
params[:raises] = raises_
|
539
|
-
params[:annotations] = @annotation_stack
|
540
|
-
@annotation_stack.
|
535
|
+
params[:annotations] = @annotation_stack
|
536
|
+
@annotation_stack = IDL::AST::Annotations.new
|
541
537
|
set_last(@cur.define(IDL::AST::Initializer, name, params))
|
542
538
|
@cur
|
543
539
|
end
|
@@ -546,8 +542,8 @@ class Delegator
|
|
546
542
|
params = {}
|
547
543
|
params[:params] = params_
|
548
544
|
params[:raises] = raises_
|
549
|
-
params[:annotations] = @annotation_stack
|
550
|
-
@annotation_stack.
|
545
|
+
params[:annotations] = @annotation_stack
|
546
|
+
@annotation_stack = IDL::AST::Annotations.new
|
551
547
|
set_last(@cur.define(IDL::AST::Finder, name, params))
|
552
548
|
@cur
|
553
549
|
end
|
@@ -636,8 +632,8 @@ class Delegator
|
|
636
632
|
|
637
633
|
def define_const(_type, _name, _expression)
|
638
634
|
params = { :type => _type, :expression => _expression }
|
639
|
-
params[:annotations] = @annotation_stack
|
640
|
-
@annotation_stack.
|
635
|
+
params[:annotations] = @annotation_stack
|
636
|
+
@annotation_stack = IDL::AST::Annotations.new
|
641
637
|
set_last(@cur.define(IDL::AST::Const, _name, params))
|
642
638
|
@cur
|
643
639
|
end
|
@@ -646,8 +642,8 @@ class Delegator
|
|
646
642
|
params = Hash.new
|
647
643
|
params[:oneway] = (_oneway == :oneway)
|
648
644
|
params[:type] = _type
|
649
|
-
params[:annotations] = @annotation_stack
|
650
|
-
@annotation_stack.
|
645
|
+
params[:annotations] = @annotation_stack
|
646
|
+
@annotation_stack = IDL::AST::Annotations.new
|
651
647
|
set_last
|
652
648
|
@cur = @cur.define(IDL::AST::Operation, _name, params)
|
653
649
|
end
|
@@ -655,14 +651,14 @@ class Delegator
|
|
655
651
|
params = Hash.new
|
656
652
|
params[:attribute] = _attribute
|
657
653
|
params[:type] = _type
|
658
|
-
params[:annotations] = @annotation_stack
|
659
|
-
@annotation_stack.
|
654
|
+
params[:annotations] = @annotation_stack
|
655
|
+
@annotation_stack = IDL::AST::Annotations.new
|
660
656
|
set_last(@cur.define(IDL::AST::Parameter, _name, params))
|
661
657
|
@cur
|
662
658
|
end
|
663
|
-
def declare_op_footer(_raises,
|
659
|
+
def declare_op_footer(_raises, instantiation_context)
|
664
660
|
@cur.raises = _raises || []
|
665
|
-
@cur.context =
|
661
|
+
@cur.context = instantiation_context
|
666
662
|
if not @cur.context.nil?
|
667
663
|
raise "context phrase's not supported"
|
668
664
|
end
|
@@ -674,8 +670,8 @@ class Delegator
|
|
674
670
|
params = Hash.new
|
675
671
|
params[:type] = _type
|
676
672
|
params[:readonly] = _readonly
|
677
|
-
params[:annotations] = @annotation_stack
|
678
|
-
@annotation_stack.
|
673
|
+
params[:annotations] = @annotation_stack
|
674
|
+
@annotation_stack = IDL::AST::Annotations.new
|
679
675
|
set_last(@cur.define(IDL::AST::Attribute, _name, params))
|
680
676
|
end
|
681
677
|
|
@@ -688,16 +684,16 @@ class Delegator
|
|
688
684
|
end
|
689
685
|
def define_struct(_name)
|
690
686
|
params = { :forward => false }
|
691
|
-
params[:annotations] = @annotation_stack
|
692
|
-
@annotation_stack.
|
687
|
+
params[:annotations] = @annotation_stack
|
688
|
+
@annotation_stack = IDL::AST::Annotations.new
|
693
689
|
set_last
|
694
690
|
@cur = @cur.define(IDL::AST::Struct, _name, params)
|
695
691
|
end
|
696
692
|
def declare_member(_type, _name)
|
697
693
|
params = Hash.new
|
698
694
|
params[:type] = _type
|
699
|
-
params[:annotations] = @annotation_stack
|
700
|
-
@annotation_stack.
|
695
|
+
params[:annotations] = @annotation_stack
|
696
|
+
@annotation_stack = IDL::AST::Annotations.new
|
701
697
|
set_last(@cur.define(IDL::AST::Member, _name, params))
|
702
698
|
@cur
|
703
699
|
end
|
@@ -710,8 +706,8 @@ class Delegator
|
|
710
706
|
end
|
711
707
|
def define_exception(_name)
|
712
708
|
params = { :forward => false }
|
713
|
-
params[:annotations] = @annotation_stack
|
714
|
-
@annotation_stack.
|
709
|
+
params[:annotations] = @annotation_stack
|
710
|
+
@annotation_stack = IDL::AST::Annotations.new
|
715
711
|
set_last
|
716
712
|
@cur = @cur.define(IDL::AST::Exception, _name, params)
|
717
713
|
end
|
@@ -731,23 +727,23 @@ class Delegator
|
|
731
727
|
end
|
732
728
|
def define_union(_name)
|
733
729
|
params = { :forward => false }
|
734
|
-
params[:annotations] = @annotation_stack
|
735
|
-
@annotation_stack.
|
730
|
+
params[:annotations] = @annotation_stack
|
731
|
+
@annotation_stack = IDL::AST::Annotations.new
|
736
732
|
set_last
|
737
733
|
@cur = @cur.define(IDL::AST::Union, _name, params)
|
738
734
|
end
|
739
735
|
def define_union_switchtype(union_node, switchtype)
|
740
736
|
union_node.set_switchtype(switchtype)
|
741
|
-
union_node.annotations.concat(@annotation_stack)
|
742
|
-
@annotation_stack.
|
737
|
+
union_node.annotations.concat(@annotation_stack)
|
738
|
+
@annotation_stack = IDL::AST::Annotations.new
|
743
739
|
union_node
|
744
740
|
end
|
745
741
|
def define_case(_labels, _type, _name)
|
746
742
|
params = Hash.new
|
747
743
|
params[:type] = _type
|
748
744
|
params[:labels] = _labels
|
749
|
-
params[:annotations] = @annotation_stack
|
750
|
-
@annotation_stack.
|
745
|
+
params[:annotations] = @annotation_stack
|
746
|
+
@annotation_stack = IDL::AST::Annotations.new
|
751
747
|
set_last(@cur.define(IDL::AST::UnionMember, _name, params))
|
752
748
|
@cur
|
753
749
|
end
|
@@ -762,8 +758,8 @@ class Delegator
|
|
762
758
|
|
763
759
|
def define_enum(_name)
|
764
760
|
params = {}
|
765
|
-
params[:annotations] = @annotation_stack
|
766
|
-
@annotation_stack.
|
761
|
+
params[:annotations] = @annotation_stack
|
762
|
+
@annotation_stack = IDL::AST::Annotations.new
|
767
763
|
set_last
|
768
764
|
@cur = @cur.define(IDL::AST::Enum, _name, params)
|
769
765
|
end
|
@@ -773,8 +769,8 @@ class Delegator
|
|
773
769
|
:value => n,
|
774
770
|
:enum => @cur
|
775
771
|
}
|
776
|
-
params[:annotations] = @annotation_stack
|
777
|
-
@annotation_stack.
|
772
|
+
params[:annotations] = @annotation_stack
|
773
|
+
@annotation_stack = IDL::AST::Annotations.new
|
778
774
|
set_last(@cur.enclosure.define(IDL::AST::Enumerator, _name, params))
|
779
775
|
@cur
|
780
776
|
end
|
@@ -788,8 +784,8 @@ class Delegator
|
|
788
784
|
def declare_typedef(_type, _name)
|
789
785
|
params = Hash.new
|
790
786
|
params[:type] = _type
|
791
|
-
params[:annotations] = @annotation_stack
|
792
|
-
@annotation_stack.
|
787
|
+
params[:annotations] = @annotation_stack
|
788
|
+
@annotation_stack = IDL::AST::Annotations.new
|
793
789
|
set_last(@cur.define(IDL::AST::Typedef, _name, params))
|
794
790
|
@cur
|
795
791
|
end
|
data/lib/ridl/expression.rb
CHANGED
@@ -21,7 +21,7 @@ module IDL
|
|
21
21
|
false
|
22
22
|
end
|
23
23
|
|
24
|
-
def instantiate(
|
24
|
+
def instantiate(_)
|
25
25
|
self
|
26
26
|
end
|
27
27
|
|
@@ -47,9 +47,9 @@ module IDL
|
|
47
47
|
def is_template?
|
48
48
|
@node.is_template?
|
49
49
|
end
|
50
|
-
def instantiate(
|
50
|
+
def instantiate(instantiation_context)
|
51
51
|
if self.is_template?
|
52
|
-
cp = IDL::AST::TemplateParam.concrete_param(
|
52
|
+
cp = IDL::AST::TemplateParam.concrete_param(instantiation_context, @node)
|
53
53
|
cp.is_a?(Expression) ? cp : ScopedName.new(cp)
|
54
54
|
else
|
55
55
|
self
|
@@ -104,8 +104,8 @@ module IDL
|
|
104
104
|
@operands.any? { |o| o.is_template? }
|
105
105
|
end
|
106
106
|
|
107
|
-
def instantiate(
|
108
|
-
self.is_template? ? self.class.new(*@operands.collect { |o| o.instantiate(
|
107
|
+
def instantiate(instantiation_context)
|
108
|
+
self.is_template? ? self.class.new(*@operands.collect { |o| o.instantiate(instantiation_context) }) : self
|
109
109
|
end
|
110
110
|
|
111
111
|
def Operation.suite_type(*types)
|
data/lib/ridl/node.rb
CHANGED
@@ -48,9 +48,9 @@ module IDL::AST
|
|
48
48
|
end
|
49
49
|
|
50
50
|
class Annotations
|
51
|
-
def initialize
|
52
|
-
@index =
|
53
|
-
@stack =
|
51
|
+
def initialize
|
52
|
+
@index = {}
|
53
|
+
@stack = []
|
54
54
|
end
|
55
55
|
|
56
56
|
def empty?
|
@@ -74,23 +74,13 @@ module IDL::AST
|
|
74
74
|
self[annid].each(&block)
|
75
75
|
end
|
76
76
|
|
77
|
-
def clear
|
78
|
-
@index.clear
|
79
|
-
@stack.clear
|
80
|
-
end
|
81
|
-
|
82
77
|
def concat(anns)
|
83
|
-
|
84
|
-
end
|
85
|
-
|
86
|
-
def dup
|
87
|
-
self.class.new(@stack.dup, @index.dup)
|
78
|
+
anns.each {|_ann| self << _ann } if anns
|
88
79
|
end
|
89
80
|
end
|
90
81
|
|
91
82
|
class Leaf
|
92
83
|
attr_reader :name, :intern
|
93
|
-
attr_reader :lm_name
|
94
84
|
attr_accessor :enclosure
|
95
85
|
attr_reader :scopes
|
96
86
|
attr_reader :prefix
|
@@ -104,26 +94,26 @@ module IDL::AST
|
|
104
94
|
_name ||= ''
|
105
95
|
_name = IDL::Scanner::Identifier.new(_name, _name) unless IDL::Scanner::Identifier === _name
|
106
96
|
@name = _name
|
107
|
-
@lm_name =
|
97
|
+
@lm_name = nil
|
108
98
|
@intern = _name.rjust(1).downcase.intern
|
109
99
|
@enclosure = _enclosure
|
110
|
-
@scopes = if @enclosure
|
100
|
+
@scopes = if @enclosure then (@enclosure.scopes.dup << self) else [] end
|
111
101
|
@prefix = ''
|
112
102
|
@repo_id = nil
|
113
103
|
@repo_ver = nil
|
114
104
|
@annotations = Annotations.new
|
115
105
|
end
|
116
106
|
|
117
|
-
def
|
118
|
-
@name.
|
107
|
+
def lm_name
|
108
|
+
@lm_name ||= @name.checked_name.dup
|
119
109
|
end
|
120
110
|
|
121
|
-
def
|
122
|
-
|
111
|
+
def lm_scopes
|
112
|
+
@lm_scopes ||= if @enclosure then (@enclosure.lm_scopes.dup << lm_name) else [] end
|
123
113
|
end
|
124
114
|
|
125
|
-
def
|
126
|
-
|
115
|
+
def unescaped_name
|
116
|
+
@name.unescaped_name
|
127
117
|
end
|
128
118
|
|
129
119
|
def scoped_name
|
@@ -131,29 +121,26 @@ module IDL::AST
|
|
131
121
|
end
|
132
122
|
|
133
123
|
def scoped_lm_name
|
134
|
-
@scoped_lm_name ||=
|
124
|
+
@scoped_lm_name ||= lm_scopes.join("::").freeze
|
135
125
|
end
|
136
126
|
|
137
127
|
def marshal_dump
|
138
|
-
[@name,
|
128
|
+
[@name, lm_name, @intern, @enclosure, @scopes, @prefix, @repo_id, @repo_ver, @annotations]
|
139
129
|
end
|
140
130
|
|
141
131
|
def marshal_load(vars)
|
142
132
|
@name, @lm_name, @intern, @enclosure, @scopes, @prefix, @repo_id, @repo_ver, @annotations = vars
|
143
133
|
@scoped_name = nil
|
144
134
|
@scoped_lm_name = nil
|
145
|
-
|
146
|
-
|
147
|
-
def repo_scopes
|
148
|
-
@repo_scopes ||= (@enclosure.nil? ? [] : (@enclosure.repo_scopes.dup << self))
|
135
|
+
@lm_scopes = nil
|
149
136
|
end
|
150
137
|
|
151
138
|
def is_template?
|
152
139
|
@enclosure && @enclosure.is_template?
|
153
140
|
end
|
154
141
|
|
155
|
-
def instantiate(
|
156
|
-
(
|
142
|
+
def instantiate(instantiation_context, _enclosure, _params = {})
|
143
|
+
(instantiation_context[self] = self.class.new(self.name, _enclosure, _params)).copy_from(self, instantiation_context)
|
157
144
|
end
|
158
145
|
|
159
146
|
def set_repo_id(id)
|
@@ -201,30 +188,26 @@ module IDL::AST
|
|
201
188
|
raise "ID prefix should not start with one of '#{REPO_ID_XCHARS.join("', '")}'" if REPO_ID_XCHARS.include?(pfx[0,1])
|
202
189
|
raise 'Invalid ID prefix! Only a..z, A..Z, 0..9, \'.\', \'-\', \'_\' or \'\/\' allowed' unless REPO_ID_RE =~ pfx
|
203
190
|
end
|
204
|
-
self.
|
191
|
+
self.set_prefix(pfx)
|
205
192
|
end
|
206
193
|
|
207
194
|
def replace_prefix(pfx)
|
208
195
|
self.prefix = pfx
|
209
196
|
end
|
210
197
|
|
211
|
-
def _set_prefix(pfx)
|
212
|
-
@prefix = pfx.to_s
|
213
|
-
end
|
214
|
-
|
215
198
|
def repository_id
|
216
199
|
if @repo_id.nil?
|
217
200
|
@repo_ver = "1.0" unless @repo_ver
|
218
201
|
format("IDL:%s%s:%s",
|
219
202
|
if @prefix.empty? then "" else @prefix+"/" end,
|
220
|
-
self.
|
203
|
+
self.scopes.collect{|s| s.name}.join("/"),
|
221
204
|
@repo_ver)
|
222
205
|
else
|
223
206
|
@repo_id
|
224
207
|
end
|
225
208
|
end
|
226
209
|
|
227
|
-
def has_annotations?
|
210
|
+
def has_annotations?
|
228
211
|
!@annotations.empty?
|
229
212
|
end
|
230
213
|
|
@@ -237,11 +220,16 @@ module IDL::AST
|
|
237
220
|
end
|
238
221
|
|
239
222
|
protected
|
240
|
-
|
241
|
-
|
242
|
-
@
|
243
|
-
|
244
|
-
|
223
|
+
|
224
|
+
def set_prefix(pfx)
|
225
|
+
@prefix = pfx.to_s
|
226
|
+
end
|
227
|
+
|
228
|
+
def copy_from(template, _)
|
229
|
+
@prefix = template.instance_variable_get(:@prefix)
|
230
|
+
@repo_id = template.instance_variable_get(:@repo_id)
|
231
|
+
@repo_ver = template.instance_variable_get(:@repo_ver)
|
232
|
+
@annotations = template.instance_variable_get(:@annotations)
|
245
233
|
self
|
246
234
|
end
|
247
235
|
end # Leaf
|
@@ -352,10 +340,10 @@ module IDL::AST
|
|
352
340
|
self.walk_members(&block)
|
353
341
|
end
|
354
342
|
|
355
|
-
def copy_from(_template,
|
343
|
+
def copy_from(_template, instantiation_context)
|
356
344
|
super
|
357
345
|
_template.__send__(:walk_members_for_copy) do |child|
|
358
|
-
_child_copy = child.instantiate(
|
346
|
+
_child_copy = child.instantiate(instantiation_context, self)
|
359
347
|
@children << _child_copy
|
360
348
|
# introduce unless already introduced (happens with module chains)
|
361
349
|
@introduced[_child_copy.intern] = _child_copy unless @introduced.has_key?(_child_copy.intern)
|
@@ -397,7 +385,6 @@ module IDL::AST
|
|
397
385
|
class Enumerator < Leaf; end
|
398
386
|
|
399
387
|
class Module < Node
|
400
|
-
NAMETYPE = :class
|
401
388
|
DEFINABLE = [
|
402
389
|
IDL::AST::Module, IDL::AST::Interface, IDL::AST::Valuebox, IDL::AST::Valuetype, IDL::AST::Const, IDL::AST::Struct,
|
403
390
|
IDL::AST::Union, IDL::AST::Enum, IDL::AST::Enumerator, IDL::AST::Typedef, IDL::AST::Include,
|
@@ -408,7 +395,6 @@ module IDL::AST
|
|
408
395
|
super(_name, _enclosure)
|
409
396
|
@anchor = params[:anchor]
|
410
397
|
@prefix = params[:prefix] || @prefix
|
411
|
-
@not_in_repo_id = params[:not_in_repo_id]
|
412
398
|
@template = params[:template]
|
413
399
|
@template_params = (params[:template_params] || []).dup
|
414
400
|
@next = nil
|
@@ -449,12 +435,8 @@ module IDL::AST
|
|
449
435
|
super(vars)
|
450
436
|
end
|
451
437
|
|
452
|
-
def instantiate(
|
453
|
-
super(
|
454
|
-
end
|
455
|
-
|
456
|
-
def repo_scopes
|
457
|
-
@repo_scopes ||= (@enclosure.nil? ? [] : (@not_in_repo_id ? @enclosure.repo_scopes.dup : (@enclosure.repo_scopes.dup << self)))
|
438
|
+
def instantiate(instantiation_context, _enclosure)
|
439
|
+
super(instantiation_context, _enclosure, {})
|
458
440
|
end
|
459
441
|
|
460
442
|
def redefine(node, params)
|
@@ -568,49 +550,52 @@ module IDL::AST
|
|
568
550
|
def replace_prefix(pfx)
|
569
551
|
self.prefix = pfx # handles validation
|
570
552
|
if @anchor.nil?
|
571
|
-
self.
|
553
|
+
self.replace_prefix_i(pfx)
|
572
554
|
else
|
573
|
-
@anchor.
|
555
|
+
@anchor.replace_prefix_i(pfx)
|
574
556
|
end
|
575
557
|
end
|
576
558
|
|
577
|
-
|
559
|
+
protected
|
560
|
+
|
561
|
+
def set_prefix(pfx)
|
578
562
|
if @anchor.nil?
|
579
|
-
self.
|
563
|
+
self.set_prefix_i(pfx)
|
580
564
|
else
|
581
|
-
@anchor.
|
565
|
+
@anchor.set_prefix_i(pfx)
|
582
566
|
end
|
583
567
|
end
|
584
568
|
|
585
|
-
protected
|
586
|
-
|
587
569
|
def get_annotations
|
588
570
|
@annotations
|
589
571
|
end
|
590
572
|
|
591
|
-
def copy_from(_template,
|
573
|
+
def copy_from(_template, instantiation_context)
|
592
574
|
super
|
593
575
|
if _template.has_anchor?
|
594
576
|
# module anchor is first to be copied/instantiated and
|
595
|
-
# should be registered in
|
596
|
-
|
597
|
-
#
|
577
|
+
# should be registered in instantiation_context
|
578
|
+
cp = IDL::AST::TemplateParam.concrete_param(instantiation_context, _template.anchor)
|
579
|
+
# concrete param must be a IDL::Type::NodeType and it's node a Module (should never fail)
|
580
|
+
raise "Invalid concrete anchor found" unless cp.is_a?(IDL::Type::NodeType) && cp.node.is_a?(IDL::AST::Module)
|
581
|
+
@anchor = cp.node
|
582
|
+
# link our self into module chain
|
598
583
|
@anchor.find_last.set_next(self)
|
599
584
|
end
|
600
585
|
@next = nil # to be sure
|
601
586
|
self
|
602
587
|
end
|
603
588
|
|
604
|
-
def
|
589
|
+
def replace_prefix_i(pfx)
|
605
590
|
walk_members { |m| m.replace_prefix(pfx) }
|
606
591
|
# propagate along chain using fast method
|
607
|
-
@next.
|
592
|
+
@next.replace_prefix_i(pfx) unless @next.nil?
|
608
593
|
end
|
609
594
|
|
610
|
-
def
|
595
|
+
def set_prefix_i(pfx)
|
611
596
|
@prefix = pfx
|
612
597
|
# propagate along chain
|
613
|
-
self.next.
|
598
|
+
self.next.set_prefix_i(pfx) unless self.next.nil?
|
614
599
|
end
|
615
600
|
|
616
601
|
def search_self(_name)
|
@@ -647,7 +632,6 @@ module IDL::AST
|
|
647
632
|
end # Module
|
648
633
|
|
649
634
|
class TemplateParam < Leaf
|
650
|
-
NAMETYPE = :class
|
651
635
|
attr_reader :idltype, :concrete
|
652
636
|
def initialize(_name, _enclosure, params)
|
653
637
|
super(_name, _enclosure)
|
@@ -680,24 +664,27 @@ module IDL::AST
|
|
680
664
|
false
|
681
665
|
end
|
682
666
|
|
683
|
-
def self.concrete_param(
|
684
|
-
|
685
|
-
|
686
|
-
|
667
|
+
def self.concrete_param(instantiation_context, tpl_elem)
|
668
|
+
# is this an element from the template's scope
|
669
|
+
if tpl_elem.is_template?
|
670
|
+
celem = if tpl_elem.is_a?(IDL::AST::TemplateParam) # an actual template parameter?
|
671
|
+
tpl_elem.concrete # get the template parameter's concrete (instantiation argument) value
|
687
672
|
else
|
688
|
-
# referenced template
|
689
|
-
|
673
|
+
# referenced template elements should have been instantiated already and available through context
|
674
|
+
ctxelem = instantiation_context[tpl_elem]
|
675
|
+
# all items in the context are AST elements but for a concrete parameter value only constants and type
|
676
|
+
# elements will be referenced; return accordingly
|
677
|
+
ctxelem.is_a?(IDL::AST::Const) ? ctxelem.expression : ctxelem.idltype
|
690
678
|
end
|
691
|
-
raise "cannot resolve concrete node for template #{
|
692
|
-
|
679
|
+
raise "cannot resolve concrete node for template #{tpl_elem.typename} #{tpl_elem.scoped_lm_name}" unless celem
|
680
|
+
celem
|
693
681
|
else
|
694
|
-
|
682
|
+
tpl_elem.idltype # just return the element's idltype if not from the template scope
|
695
683
|
end
|
696
684
|
end
|
697
685
|
end
|
698
686
|
|
699
687
|
class TemplateModule < Module
|
700
|
-
NAMETYPE = :class
|
701
688
|
DEFINABLE = [
|
702
689
|
IDL::AST::Include, IDL::AST::Module, IDL::AST::Interface, IDL::AST::Valuebox, IDL::AST::Valuetype,
|
703
690
|
IDL::AST::Const, IDL::AST::Struct, IDL::AST::Union, IDL::AST::Enum, IDL::AST::Enumerator, IDL::AST::Typedef,
|
@@ -725,7 +712,7 @@ module IDL::AST
|
|
725
712
|
@template_params
|
726
713
|
end
|
727
714
|
|
728
|
-
def instantiate(_module_instance,
|
715
|
+
def instantiate(_module_instance, instantiation_context = {})
|
729
716
|
# process concrete parameters
|
730
717
|
@template_params.each_with_index do |_tp, _ix|
|
731
718
|
raise "missing template parameter for #{typename} #{scoped_lm_name}: #{_tp.name}" unless _ix < _module_instance.template_params.size
|
@@ -769,11 +756,11 @@ module IDL::AST
|
|
769
756
|
else
|
770
757
|
raise "invalid instantiation parameter for #{typename} #{scoped_lm_name}: #{_cp.class.name}"
|
771
758
|
end
|
772
|
-
# if we get here all is well -> store concrete param
|
773
|
-
_tp.set_concrete_param(_cp
|
759
|
+
# if we get here all is well -> store concrete param (either IDL type or expression)
|
760
|
+
_tp.set_concrete_param(_cp)
|
774
761
|
end
|
775
762
|
# instantiate template by copying template module state to module instance
|
776
|
-
_module_instance.copy_from(self,
|
763
|
+
_module_instance.copy_from(self, instantiation_context)
|
777
764
|
end
|
778
765
|
|
779
766
|
protected
|
@@ -784,7 +771,6 @@ module IDL::AST
|
|
784
771
|
end # TemplateModule
|
785
772
|
|
786
773
|
class TemplateModuleReference < Leaf
|
787
|
-
NAMETYPE = :class
|
788
774
|
def initialize(_name, _enclosure, _params)
|
789
775
|
super(_name, _enclosure)
|
790
776
|
unless _params[:tpl_type].is_a?(IDL::Type::ScopedName) && _params[:tpl_type].is_node?(IDL::AST::TemplateModule)
|
@@ -809,14 +795,13 @@ module IDL::AST
|
|
809
795
|
super(vars)
|
810
796
|
end
|
811
797
|
|
812
|
-
def instantiate(
|
798
|
+
def instantiate(instantiation_context, _enclosure)
|
813
799
|
inst_params = @params.collect do |tp|
|
814
|
-
# concrete objects are either Expression or
|
815
|
-
|
816
|
-
tp.concrete.is_a?(IDL::Expression) ? tp.concrete : IDL::Type::ScopedName.new(tp.concrete)
|
800
|
+
# concrete objects are either Expression or Type
|
801
|
+
tp.concrete
|
817
802
|
end
|
818
803
|
mod_inst = IDL::AST::Module.new(self.name, _enclosure, { :template => @template, :template_params => inst_params })
|
819
|
-
@template.instantiate(mod_inst,
|
804
|
+
@template.instantiate(mod_inst, instantiation_context)
|
820
805
|
mod_inst
|
821
806
|
end
|
822
807
|
|
@@ -836,7 +821,10 @@ module IDL::AST
|
|
836
821
|
#overrule
|
837
822
|
@scopes = @enclosure.scopes
|
838
823
|
@scoped_name = @scopes.collect{|s| s.name}.join("::")
|
839
|
-
|
824
|
+
end
|
825
|
+
|
826
|
+
def lm_scopes
|
827
|
+
@lm_scopes ||= @enclosure.lm_scopes
|
840
828
|
end
|
841
829
|
|
842
830
|
def marshal_dump
|
@@ -851,16 +839,11 @@ module IDL::AST
|
|
851
839
|
#overrule
|
852
840
|
@scopes = @enclosure.scopes || []
|
853
841
|
@scoped_name = @scopes.collect{|s| s.name}.join("::")
|
854
|
-
@scoped_lm_name = @scopes.collect{|s| s.lm_name}.join("::")
|
855
842
|
end
|
856
843
|
|
857
844
|
def is_defined?; @defined; end
|
858
845
|
def is_preprocessed?; @preprocessed; end
|
859
846
|
|
860
|
-
def repo_scopes
|
861
|
-
@repo_scopes ||= (@enclosure.nil? ? [] : @enclosure.repo_scopes.dup)
|
862
|
-
end
|
863
|
-
|
864
847
|
def introduce(node)
|
865
848
|
@enclosure.introduce(node) unless node == self
|
866
849
|
end
|
@@ -874,7 +857,7 @@ module IDL::AST
|
|
874
857
|
end
|
875
858
|
|
876
859
|
protected
|
877
|
-
def copy_from(_template,
|
860
|
+
def copy_from(_template, instantiation_context)
|
878
861
|
super
|
879
862
|
@filename = _template.filename
|
880
863
|
@defined = _template.is_defined?
|
@@ -882,7 +865,6 @@ module IDL::AST
|
|
882
865
|
#overrule
|
883
866
|
@scopes = @enclosure.scopes
|
884
867
|
@scoped_name = @scopes.collect{|s| s.name}.join("::")
|
885
|
-
@scoped_lm_name = @scopes.collect{|s| s.lm_name}.join("::")
|
886
868
|
self
|
887
869
|
end
|
888
870
|
|
@@ -961,7 +943,6 @@ module IDL::AST
|
|
961
943
|
end # Derivable
|
962
944
|
|
963
945
|
class Interface < Derivable
|
964
|
-
NAMETYPE = :class
|
965
946
|
DEFINABLE = [IDL::AST::Const, IDL::AST::Operation, IDL::AST::Attribute,
|
966
947
|
IDL::AST::Struct, IDL::AST::Union, IDL::AST::Typedef, IDL::AST::Enum, IDL::AST::Enumerator]
|
967
948
|
attr_reader :bases
|
@@ -994,17 +975,17 @@ module IDL::AST
|
|
994
975
|
super(vars)
|
995
976
|
end
|
996
977
|
|
997
|
-
def instantiate(
|
978
|
+
def instantiate(instantiation_context, _enclosure)
|
998
979
|
_params = {
|
999
980
|
:forward => self.is_forward?,
|
1000
981
|
:abstract => self.is_abstract?,
|
1001
982
|
:pseudo => self.is_pseudo?,
|
1002
983
|
:local => self.is_local?,
|
1003
|
-
:inherits => self.concrete_bases(
|
984
|
+
:inherits => self.concrete_bases(instantiation_context)
|
1004
985
|
}
|
1005
986
|
# instantiate concrete interface def and validate
|
1006
987
|
# concrete bases
|
1007
|
-
super(
|
988
|
+
super(instantiation_context, _enclosure, _params)
|
1008
989
|
end
|
1009
990
|
|
1010
991
|
def is_abstract?; @abstract; end
|
@@ -1016,7 +997,7 @@ module IDL::AST
|
|
1016
997
|
def add_bases(inherits_)
|
1017
998
|
inherits_.each do |tc|
|
1018
999
|
unless tc.is_a?(IDL::Type::ScopedName) && tc.is_node?(IDL::AST::TemplateParam)
|
1019
|
-
unless (tc.is_a?(IDL::Type::
|
1000
|
+
unless (tc.is_a?(IDL::Type::NodeType) && tc.is_node?(IDL::AST::Interface))
|
1020
1001
|
raise "invalid inheritance identifier for #{typename} #{scoped_lm_name}: #{tc.typename}"
|
1021
1002
|
end
|
1022
1003
|
rtc = tc.resolved_type
|
@@ -1121,10 +1102,10 @@ module IDL::AST
|
|
1121
1102
|
|
1122
1103
|
protected
|
1123
1104
|
|
1124
|
-
def concrete_bases(
|
1105
|
+
def concrete_bases(instantiation_context)
|
1125
1106
|
# collect all bases and resolve any template param types
|
1126
|
-
@bases.collect do |
|
1127
|
-
IDL::
|
1107
|
+
@bases.collect do |base|
|
1108
|
+
IDL::AST::TemplateParam.concrete_param(instantiation_context, base)
|
1128
1109
|
end
|
1129
1110
|
end
|
1130
1111
|
|
@@ -1134,7 +1115,6 @@ module IDL::AST
|
|
1134
1115
|
end # Interface
|
1135
1116
|
|
1136
1117
|
class ComponentBase < Derivable
|
1137
|
-
NAMETYPE = :class
|
1138
1118
|
DEFINABLE = []
|
1139
1119
|
attr_reader :base
|
1140
1120
|
attr_reader :interfaces
|
@@ -1163,18 +1143,18 @@ module IDL::AST
|
|
1163
1143
|
super(vars)
|
1164
1144
|
end
|
1165
1145
|
|
1166
|
-
def instantiate(
|
1146
|
+
def instantiate(instantiation_context, _enclosure, _params = {})
|
1167
1147
|
_params.merge!({
|
1168
|
-
:base => @base ? IDL::
|
1169
|
-
:supports => self.concrete_interfaces(
|
1148
|
+
:base => @base ? IDL::AST::TemplateParam.concrete_param(instantiation_context, @base) : @base,
|
1149
|
+
:supports => self.concrete_interfaces(instantiation_context)
|
1170
1150
|
})
|
1171
1151
|
# instantiate concrete def and validate
|
1172
|
-
super(
|
1152
|
+
super(instantiation_context, _enclosure, _params)
|
1173
1153
|
end
|
1174
1154
|
|
1175
1155
|
def set_base(parent)
|
1176
1156
|
unless parent.is_a?(IDL::Type::ScopedName) && parent.is_node?(IDL::AST::TemplateParam)
|
1177
|
-
unless (parent.is_a?(IDL::Type::
|
1157
|
+
unless (parent.is_a?(IDL::Type::NodeType) && parent.is_node?(self.class))
|
1178
1158
|
raise "invalid inheritance identifier for #{typename} #{scoped_lm_name}: #{parent.typename}"
|
1179
1159
|
end
|
1180
1160
|
if parent.resolved_type.node.has_base?(self)
|
@@ -1290,16 +1270,15 @@ module IDL::AST
|
|
1290
1270
|
(@resolved_base ? [@resolved_base] : []).concat(@resolved_interfaces)
|
1291
1271
|
end
|
1292
1272
|
|
1293
|
-
def concrete_interfaces(
|
1273
|
+
def concrete_interfaces(instantiation_context)
|
1294
1274
|
# collect all bases and resolve any template param types
|
1295
1275
|
@interfaces.collect do |_intf|
|
1296
|
-
IDL::
|
1276
|
+
IDL::AST::TemplateParam.concrete_param(instantiation_context, _intf)
|
1297
1277
|
end
|
1298
1278
|
end
|
1299
1279
|
end # ComponentBase
|
1300
1280
|
|
1301
1281
|
class Home < ComponentBase
|
1302
|
-
NAMETYPE = :class
|
1303
1282
|
DEFINABLE = [IDL::AST::Const, IDL::AST::Operation, IDL::AST::Attribute, IDL::AST::Initializer, IDL::AST::Finder,
|
1304
1283
|
IDL::AST::Struct, IDL::AST::Union, IDL::AST::Typedef, IDL::AST::Enum, IDL::AST::Enumerator]
|
1305
1284
|
attr_reader :component
|
@@ -1327,13 +1306,13 @@ module IDL::AST
|
|
1327
1306
|
super(vars)
|
1328
1307
|
end
|
1329
1308
|
|
1330
|
-
def instantiate(
|
1309
|
+
def instantiate(instantiation_context, _enclosure)
|
1331
1310
|
_params = {
|
1332
|
-
:component => IDL::
|
1333
|
-
:primarykey => @primarykey ? IDL::
|
1311
|
+
:component => IDL::AST::TemplateParam.concrete_param(instantiation_context, @component),
|
1312
|
+
:primarykey => @primarykey ? IDL::AST::TemplateParam.concrete_param(instantiation_context, @primarykey) : @primarykey
|
1334
1313
|
}
|
1335
1314
|
# instantiate concrete home def and validate
|
1336
|
-
super(
|
1315
|
+
super(instantiation_context, _enclosure, _params)
|
1337
1316
|
end
|
1338
1317
|
|
1339
1318
|
def set_component_and_key(comp, key)
|
@@ -1374,7 +1353,6 @@ module IDL::AST
|
|
1374
1353
|
end # Home
|
1375
1354
|
|
1376
1355
|
class Connector < ComponentBase
|
1377
|
-
NAMETYPE = :class
|
1378
1356
|
DEFINABLE = [IDL::AST::Attribute, IDL::AST::Port]
|
1379
1357
|
|
1380
1358
|
def initialize(_name, _enclosure, params)
|
@@ -1390,9 +1368,9 @@ module IDL::AST
|
|
1390
1368
|
super(vars)
|
1391
1369
|
end
|
1392
1370
|
|
1393
|
-
def instantiate(
|
1371
|
+
def instantiate(instantiation_context, _enclosure)
|
1394
1372
|
# instantiate concrete connector def and validate
|
1395
|
-
super(
|
1373
|
+
super(instantiation_context, _enclosure, {})
|
1396
1374
|
end
|
1397
1375
|
|
1398
1376
|
def is_defined?; true; end
|
@@ -1404,7 +1382,7 @@ module IDL::AST
|
|
1404
1382
|
|
1405
1383
|
def set_base(parent)
|
1406
1384
|
unless parent.is_a?(IDL::Type::ScopedName) && parent.is_node?(IDL::AST::TemplateParam)
|
1407
|
-
|
1385
|
+
unless (parent.is_a?(IDL::Type::NodeType) && parent.is_node?(self.class))
|
1408
1386
|
raise "invalid inheritance identifier for #{typename} #{scoped_lm_name}: #{parent.typename}"
|
1409
1387
|
end
|
1410
1388
|
@resolved_base = parent.resolved_type.node
|
@@ -1453,7 +1431,6 @@ module IDL::AST
|
|
1453
1431
|
end # Connector
|
1454
1432
|
|
1455
1433
|
class Component < ComponentBase
|
1456
|
-
NAMETYPE = :class
|
1457
1434
|
DEFINABLE = [IDL::AST::Attribute, IDL::AST::Port]
|
1458
1435
|
|
1459
1436
|
def initialize(_name, _enclosure, params)
|
@@ -1471,9 +1448,9 @@ module IDL::AST
|
|
1471
1448
|
super(vars)
|
1472
1449
|
end
|
1473
1450
|
|
1474
|
-
def instantiate(
|
1451
|
+
def instantiate(instantiation_context, _enclosure)
|
1475
1452
|
# instantiate concrete component def and validate
|
1476
|
-
super(
|
1453
|
+
super(instantiation_context, _enclosure, { :forward => self.is_forward? })
|
1477
1454
|
end
|
1478
1455
|
|
1479
1456
|
def is_defined?; @defined; end
|
@@ -1481,7 +1458,7 @@ module IDL::AST
|
|
1481
1458
|
|
1482
1459
|
def set_base(parent)
|
1483
1460
|
unless parent.is_a?(IDL::Type::ScopedName) && parent.is_node?(IDL::AST::TemplateParam)
|
1484
|
-
|
1461
|
+
unless (parent.is_a?(IDL::Type::NodeType) && parent.is_node?(self.class))
|
1485
1462
|
raise "invalid inheritance identifier for #{typename} #{scoped_lm_name}: #{parent.typename}"
|
1486
1463
|
end
|
1487
1464
|
@resolved_base = parent.resolved_type.node
|
@@ -1537,7 +1514,6 @@ module IDL::AST
|
|
1537
1514
|
end # Component
|
1538
1515
|
|
1539
1516
|
class Porttype < Node
|
1540
|
-
NAMETYPE = :class
|
1541
1517
|
DEFINABLE = [IDL::AST::Attribute, IDL::AST::Port]
|
1542
1518
|
attr_reader :idltype
|
1543
1519
|
def initialize(_name, _enclosure, params)
|
@@ -1553,13 +1529,12 @@ module IDL::AST
|
|
1553
1529
|
@children.select {|c| IDL::AST::Attribute === c}
|
1554
1530
|
end
|
1555
1531
|
|
1556
|
-
def instantiate(
|
1557
|
-
super(
|
1532
|
+
def instantiate(instantiation_context, _enclosure)
|
1533
|
+
super(instantiation_context, _enclosure, {})
|
1558
1534
|
end
|
1559
1535
|
end # Porttype
|
1560
1536
|
|
1561
1537
|
class Port < Leaf
|
1562
|
-
NAMETYPE = :member
|
1563
1538
|
PORTTYPES = [:facet, :receptacle, :emitter, :publisher, :consumer, :port, :mirrorport]
|
1564
1539
|
PORT_MIRRORS = {:facet => :receptacle, :receptacle => :facet}
|
1565
1540
|
EXTPORTDEF_ANNOTATION = 'ExtendedPortDef'
|
@@ -1573,28 +1548,28 @@ module IDL::AST
|
|
1573
1548
|
case @porttype
|
1574
1549
|
when :facet, :receptacle
|
1575
1550
|
unless @idltype.is_a?(IDL::Type::Object) ||
|
1576
|
-
(@idltype.is_a?(IDL::Type::
|
1551
|
+
(@idltype.is_a?(IDL::Type::NodeType) && (@idltype.is_node?(IDL::AST::Interface) || @idltype.is_node?(IDL::AST::TemplateParam)))
|
1577
1552
|
raise "invalid type for #{typename} #{scoped_lm_name}: #{@idltype.typename}"
|
1578
1553
|
end
|
1579
1554
|
when :port, :mirrorport
|
1580
|
-
unless @idltype.is_a?(IDL::Type::
|
1555
|
+
unless @idltype.is_a?(IDL::Type::NodeType) && (@idltype.is_node?(IDL::AST::Porttype) || @idltype.is_node?(IDL::AST::TemplateParam))
|
1581
1556
|
raise "invalid type for #{typename} #{scoped_lm_name}: #{@idltype.typename}"
|
1582
1557
|
end
|
1583
1558
|
else
|
1584
|
-
unless @idltype.is_a?(IDL::Type::
|
1559
|
+
unless @idltype.is_a?(IDL::Type::NodeType) && (@idltype.is_node?(IDL::AST::Eventtype) || @idltype.is_node?(IDL::AST::TemplateParam))
|
1585
1560
|
raise "invalid type for #{typename} #{scoped_lm_name}: #{@idltype.typename}"
|
1586
1561
|
end
|
1587
1562
|
end
|
1588
1563
|
@multiple = params[:multiple] ? true : false
|
1589
1564
|
end
|
1590
1565
|
|
1591
|
-
def instantiate(
|
1566
|
+
def instantiate(instantiation_context, _enclosure)
|
1592
1567
|
_params = {
|
1593
|
-
:type => @idltype.instantiate(
|
1568
|
+
:type => @idltype.instantiate(instantiation_context),
|
1594
1569
|
:porttype => @porttype,
|
1595
1570
|
:multiple => @multiple
|
1596
1571
|
}
|
1597
|
-
super(
|
1572
|
+
super(instantiation_context, _enclosure, _params)
|
1598
1573
|
end
|
1599
1574
|
|
1600
1575
|
def multiple?
|
@@ -1639,7 +1614,6 @@ module IDL::AST
|
|
1639
1614
|
end # Port
|
1640
1615
|
|
1641
1616
|
class Valuebox < Leaf
|
1642
|
-
NAMETYPE = :class
|
1643
1617
|
attr_reader :idltype, :boxed_type
|
1644
1618
|
def initialize(_name, _enclosure, params)
|
1645
1619
|
super(_name, _enclosure)
|
@@ -1666,16 +1640,15 @@ module IDL::AST
|
|
1666
1640
|
super(vars)
|
1667
1641
|
end
|
1668
1642
|
|
1669
|
-
def instantiate(
|
1643
|
+
def instantiate(instantiation_context, _enclosure)
|
1670
1644
|
_params = {
|
1671
|
-
:type => @boxed_type.instantiate(
|
1645
|
+
:type => @boxed_type.instantiate(instantiation_context)
|
1672
1646
|
}
|
1673
|
-
super(
|
1647
|
+
super(instantiation_context, _enclosure, _params)
|
1674
1648
|
end
|
1675
1649
|
end # Valuebox
|
1676
1650
|
|
1677
1651
|
class Valuetype < Derivable
|
1678
|
-
NAMETYPE = :class
|
1679
1652
|
DEFINABLE = [IDL::AST::Include, IDL::AST::Const, IDL::AST::Operation, IDL::AST::Attribute, IDL::AST::StateMember, IDL::AST::Initializer,
|
1680
1653
|
IDL::AST::Struct, IDL::AST::Union, IDL::AST::Typedef, IDL::AST::Enum, IDL::AST::Enumerator]
|
1681
1654
|
attr_reader :bases, :interfaces
|
@@ -1732,7 +1705,7 @@ module IDL::AST
|
|
1732
1705
|
super(vars)
|
1733
1706
|
end
|
1734
1707
|
|
1735
|
-
def instantiate(
|
1708
|
+
def instantiate(instantiation_context, _enclosure)
|
1736
1709
|
_params = {
|
1737
1710
|
:forward => self.is_forward?,
|
1738
1711
|
:abstract => self.is_abstract?,
|
@@ -1740,12 +1713,12 @@ module IDL::AST
|
|
1740
1713
|
:inherits => {
|
1741
1714
|
:base => {
|
1742
1715
|
:truncatable => self.is_truncatable?,
|
1743
|
-
:list => self.concrete_bases(
|
1716
|
+
:list => self.concrete_bases(instantiation_context)
|
1744
1717
|
},
|
1745
|
-
:supports => self.concrete_interfaces(
|
1718
|
+
:supports => self.concrete_interfaces(instantiation_context)
|
1746
1719
|
}
|
1747
1720
|
}
|
1748
|
-
inst = super(
|
1721
|
+
inst = super(instantiation_context, _enclosure, _params)
|
1749
1722
|
inst.defined = true
|
1750
1723
|
inst
|
1751
1724
|
end
|
@@ -1945,16 +1918,16 @@ module IDL::AST
|
|
1945
1918
|
@resolved_bases
|
1946
1919
|
end
|
1947
1920
|
|
1948
|
-
def concrete_bases(
|
1921
|
+
def concrete_bases(instantiation_context)
|
1949
1922
|
# collect all bases and resolve any template param types
|
1950
1923
|
@bases.collect do |_base|
|
1951
|
-
IDL::
|
1924
|
+
IDL::AST::TemplateParam.concrete_param(instantiation_context, _base)
|
1952
1925
|
end
|
1953
1926
|
end
|
1954
1927
|
|
1955
|
-
def concrete_interfaces(
|
1928
|
+
def concrete_interfaces(instantiation_context)
|
1956
1929
|
@interfaces.collect do |_intf|
|
1957
|
-
IDL::
|
1930
|
+
IDL::AST::TemplateParam.concrete_param(instantiation_context, _intf)
|
1958
1931
|
end
|
1959
1932
|
end
|
1960
1933
|
end # Valuetype
|
@@ -1968,7 +1941,6 @@ module IDL::AST
|
|
1968
1941
|
end # Eventtype
|
1969
1942
|
|
1970
1943
|
class StateMember < Leaf
|
1971
|
-
NAMETYPE = :member
|
1972
1944
|
attr_reader :idltype, :visibility
|
1973
1945
|
def initialize(_name, _enclosure, params)
|
1974
1946
|
@is_recursive = false
|
@@ -2050,12 +2022,12 @@ module IDL::AST
|
|
2050
2022
|
super(vars)
|
2051
2023
|
end
|
2052
2024
|
|
2053
|
-
def instantiate(
|
2025
|
+
def instantiate(instantiation_context, _enclosure)
|
2054
2026
|
_params = {
|
2055
|
-
:type => @idltype.instantiate(
|
2027
|
+
:type => @idltype.instantiate(instantiation_context),
|
2056
2028
|
:visibility => self.visibility
|
2057
2029
|
}
|
2058
|
-
super(
|
2030
|
+
super(instantiation_context, _enclosure, _params)
|
2059
2031
|
end
|
2060
2032
|
|
2061
2033
|
def is_local?(recurstk)
|
@@ -2076,7 +2048,6 @@ module IDL::AST
|
|
2076
2048
|
end # StateMember
|
2077
2049
|
|
2078
2050
|
class Initializer < Leaf
|
2079
|
-
NAMETYPE = :member
|
2080
2051
|
attr_reader :raises, :params
|
2081
2052
|
def initialize(_name, _enclosure, params)
|
2082
2053
|
super(_name, _enclosure)
|
@@ -2107,28 +2078,28 @@ module IDL::AST
|
|
2107
2078
|
super(vars)
|
2108
2079
|
end
|
2109
2080
|
|
2110
|
-
def instantiate(
|
2081
|
+
def instantiate(instantiation_context, _enclosure)
|
2111
2082
|
_params = {
|
2112
|
-
:raises => self.concrete_raises(
|
2083
|
+
:raises => self.concrete_raises(instantiation_context)
|
2113
2084
|
}
|
2114
|
-
_init = super(
|
2115
|
-
_init.set_concrete_parameters(
|
2085
|
+
_init = super(instantiation_context, _enclosure, _params)
|
2086
|
+
_init.set_concrete_parameters(instantiation_context, @params)
|
2116
2087
|
_init
|
2117
2088
|
end
|
2118
2089
|
|
2119
2090
|
protected
|
2120
2091
|
|
2121
|
-
def concrete_raises(
|
2092
|
+
def concrete_raises(instantiation_context)
|
2122
2093
|
@raises.collect do |ex|
|
2123
|
-
ex.instantiate(
|
2094
|
+
ex.instantiate(instantiation_context)
|
2124
2095
|
end
|
2125
2096
|
end
|
2126
2097
|
|
2127
|
-
def set_concrete_parameters(
|
2098
|
+
def set_concrete_parameters(instantiation_context, parms)
|
2128
2099
|
@params = parms.collect do |parm|
|
2129
2100
|
IDL::AST::Parameter.new(parm.name, self,
|
2130
2101
|
{ :attribute => :in,
|
2131
|
-
:type => parm.idltype.instantiate(
|
2102
|
+
:type => parm.idltype.instantiate(instantiation_context) })
|
2132
2103
|
end
|
2133
2104
|
end
|
2134
2105
|
|
@@ -2138,7 +2109,6 @@ module IDL::AST
|
|
2138
2109
|
end # Finder
|
2139
2110
|
|
2140
2111
|
class Const < Leaf
|
2141
|
-
NAMETYPE = :class
|
2142
2112
|
attr_reader :idltype, :expression, :value
|
2143
2113
|
def initialize(_name, _enclosure, params)
|
2144
2114
|
super(_name, _enclosure)
|
@@ -2169,17 +2139,16 @@ module IDL::AST
|
|
2169
2139
|
end
|
2170
2140
|
end
|
2171
2141
|
|
2172
|
-
def instantiate(
|
2142
|
+
def instantiate(instantiation_context, _enclosure)
|
2173
2143
|
_params = {
|
2174
|
-
:type => @idltype.instantiate(
|
2175
|
-
:expression => @expression.instantiate(
|
2144
|
+
:type => @idltype.instantiate(instantiation_context),
|
2145
|
+
:expression => @expression.instantiate(instantiation_context)
|
2176
2146
|
}
|
2177
|
-
super(
|
2147
|
+
super(instantiation_context, _enclosure, _params)
|
2178
2148
|
end
|
2179
2149
|
end # Const
|
2180
2150
|
|
2181
2151
|
class Parameter < Leaf
|
2182
|
-
NAMETYPE = :member
|
2183
2152
|
IN, OUT, INOUT = 0, 1, 2
|
2184
2153
|
ATTRIBUTE_MAP = {
|
2185
2154
|
:in => IN,
|
@@ -2225,17 +2194,16 @@ module IDL::AST
|
|
2225
2194
|
super(vars)
|
2226
2195
|
end
|
2227
2196
|
|
2228
|
-
def instantiate(
|
2197
|
+
def instantiate(instantiation_context, _enclosure)
|
2229
2198
|
_params = {
|
2230
|
-
:type => @idltype.instantiate(
|
2199
|
+
:type => @idltype.instantiate(instantiation_context),
|
2231
2200
|
:attribute => @attribute
|
2232
2201
|
}
|
2233
|
-
super(
|
2202
|
+
super(instantiation_context, _enclosure, _params)
|
2234
2203
|
end
|
2235
2204
|
end # Parameter
|
2236
2205
|
|
2237
2206
|
class Operation < Node
|
2238
|
-
NAMETYPE = :member
|
2239
2207
|
DEFINABLE = [IDL::AST::Parameter]
|
2240
2208
|
attr_reader :idltype, :oneway, :raises
|
2241
2209
|
attr_accessor :context
|
@@ -2279,13 +2247,13 @@ module IDL::AST
|
|
2279
2247
|
super(vars)
|
2280
2248
|
end
|
2281
2249
|
|
2282
|
-
def instantiate(
|
2250
|
+
def instantiate(instantiation_context, _enclosure)
|
2283
2251
|
_params = {
|
2284
|
-
:type => @idltype.instantiate(
|
2252
|
+
:type => @idltype.instantiate(instantiation_context),
|
2285
2253
|
:oneway => @oneway,
|
2286
2254
|
}
|
2287
|
-
_op = super(
|
2288
|
-
_op.raises = self.concrete_raises(
|
2255
|
+
_op = super(instantiation_context, _enclosure, _params)
|
2256
|
+
_op.raises = self.concrete_raises(instantiation_context)
|
2289
2257
|
_op.context = @context
|
2290
2258
|
_op
|
2291
2259
|
end
|
@@ -2326,13 +2294,13 @@ module IDL::AST
|
|
2326
2294
|
|
2327
2295
|
protected
|
2328
2296
|
|
2329
|
-
def concrete_raises(
|
2297
|
+
def concrete_raises(instantiation_context)
|
2330
2298
|
@raises.collect do |ex|
|
2331
|
-
ex.instantiate(
|
2299
|
+
ex.instantiate(instantiation_context)
|
2332
2300
|
end
|
2333
2301
|
end
|
2334
2302
|
|
2335
|
-
def copy_from(_template,
|
2303
|
+
def copy_from(_template, instantiation_context)
|
2336
2304
|
super
|
2337
2305
|
self.walk_members do |param|
|
2338
2306
|
case param.attribute
|
@@ -2352,7 +2320,6 @@ module IDL::AST
|
|
2352
2320
|
class Attribute < Leaf
|
2353
2321
|
attr_reader :idltype, :readonly
|
2354
2322
|
attr_reader :get_raises, :set_raises
|
2355
|
-
NAMETYPE = :member
|
2356
2323
|
def initialize(_name, _enclosure, params)
|
2357
2324
|
super(_name, _enclosure)
|
2358
2325
|
@idltype = params[:type]
|
@@ -2388,14 +2355,14 @@ module IDL::AST
|
|
2388
2355
|
super(vars)
|
2389
2356
|
end
|
2390
2357
|
|
2391
|
-
def instantiate(
|
2358
|
+
def instantiate(instantiation_context, _enclosure)
|
2392
2359
|
_params = {
|
2393
|
-
:type => @idltype.instantiate(
|
2360
|
+
:type => @idltype.instantiate(instantiation_context),
|
2394
2361
|
:readonly => @readonly
|
2395
2362
|
}
|
2396
|
-
_att = super(
|
2397
|
-
_att.get_raises = self.concrete_get_raises(
|
2398
|
-
_att.set_raises = self.concrete_set_raises(
|
2363
|
+
_att = super(instantiation_context, _enclosure, _params)
|
2364
|
+
_att.get_raises = self.concrete_get_raises(instantiation_context)
|
2365
|
+
_att.set_raises = self.concrete_set_raises(instantiation_context)
|
2399
2366
|
_att
|
2400
2367
|
end
|
2401
2368
|
|
@@ -2428,21 +2395,20 @@ module IDL::AST
|
|
2428
2395
|
|
2429
2396
|
protected
|
2430
2397
|
|
2431
|
-
def concrete_get_raises(
|
2398
|
+
def concrete_get_raises(instantiation_context)
|
2432
2399
|
@get_raises.collect do |ex|
|
2433
|
-
ex.instantiate(
|
2400
|
+
ex.instantiate(instantiation_context)
|
2434
2401
|
end
|
2435
2402
|
end
|
2436
2403
|
|
2437
|
-
def concrete_set_raises(
|
2404
|
+
def concrete_set_raises(instantiation_context)
|
2438
2405
|
@set_raises.collect do |ex|
|
2439
|
-
ex.instantiate(
|
2406
|
+
ex.instantiate(instantiation_context)
|
2440
2407
|
end
|
2441
2408
|
end
|
2442
2409
|
end # Attribute
|
2443
2410
|
|
2444
2411
|
class Struct < Node
|
2445
|
-
NAMETYPE = :class
|
2446
2412
|
DEFINABLE = [IDL::AST::Member, IDL::AST::Struct, IDL::AST::Union, IDL::AST::Enum, IDL::AST::Enumerator]
|
2447
2413
|
attr_reader :idltype
|
2448
2414
|
def initialize(_name, _enclosure, params)
|
@@ -2488,11 +2454,11 @@ module IDL::AST
|
|
2488
2454
|
super(vars)
|
2489
2455
|
end
|
2490
2456
|
|
2491
|
-
def instantiate(
|
2457
|
+
def instantiate(instantiation_context, _enclosure)
|
2492
2458
|
_params = {
|
2493
2459
|
:forward => @forward
|
2494
2460
|
}
|
2495
|
-
_s = super(
|
2461
|
+
_s = super(instantiation_context, _enclosure, _params)
|
2496
2462
|
_s.defined = self.is_defined?
|
2497
2463
|
_s
|
2498
2464
|
end
|
@@ -2514,7 +2480,6 @@ module IDL::AST
|
|
2514
2480
|
|
2515
2481
|
class Member < Leaf
|
2516
2482
|
attr_reader :idltype
|
2517
|
-
NAMETYPE = :member
|
2518
2483
|
def initialize(_name, _enclosure, params)
|
2519
2484
|
super(_name, _enclosure)
|
2520
2485
|
@idltype = params[:type]
|
@@ -2571,16 +2536,15 @@ module IDL::AST
|
|
2571
2536
|
super(vars)
|
2572
2537
|
end
|
2573
2538
|
|
2574
|
-
def instantiate(
|
2539
|
+
def instantiate(instantiation_context, _enclosure, _params = {})
|
2575
2540
|
_params.merge!({
|
2576
|
-
:type => @idltype.instantiate(
|
2541
|
+
:type => @idltype.instantiate(instantiation_context),
|
2577
2542
|
})
|
2578
|
-
super(
|
2543
|
+
super(instantiation_context, _enclosure, _params)
|
2579
2544
|
end
|
2580
2545
|
end # Member
|
2581
2546
|
|
2582
2547
|
class Union < Node
|
2583
|
-
NAMETYPE = :class
|
2584
2548
|
DEFINABLE = [IDL::AST::UnionMember, IDL::AST::Struct, IDL::AST::Union, IDL::AST::Enum, IDL::AST::Enumerator]
|
2585
2549
|
attr_reader :idltype
|
2586
2550
|
attr_accessor :switchtype
|
@@ -2679,12 +2643,12 @@ module IDL::AST
|
|
2679
2643
|
super(vars)
|
2680
2644
|
end
|
2681
2645
|
|
2682
|
-
def instantiate(
|
2646
|
+
def instantiate(instantiation_context, _enclosure)
|
2683
2647
|
_params = {
|
2684
2648
|
:forward => @forward
|
2685
2649
|
}
|
2686
|
-
_u = super(
|
2687
|
-
_u.set_switchtype(@switchtype.instantiate(
|
2650
|
+
_u = super(instantiation_context, _enclosure, _params)
|
2651
|
+
_u.set_switchtype(@switchtype.instantiate(instantiation_context))
|
2688
2652
|
_u.validate_labels
|
2689
2653
|
_u.defined = self.is_defined?
|
2690
2654
|
_u
|
@@ -2698,7 +2662,6 @@ module IDL::AST
|
|
2698
2662
|
end # Union
|
2699
2663
|
|
2700
2664
|
class UnionMember < Member
|
2701
|
-
NAMETYPE = :member
|
2702
2665
|
attr_reader :labels
|
2703
2666
|
def initialize(_name, _enclosure, params)
|
2704
2667
|
super(_name, _enclosure, params)
|
@@ -2719,16 +2682,15 @@ module IDL::AST
|
|
2719
2682
|
super(vars)
|
2720
2683
|
end
|
2721
2684
|
|
2722
|
-
def instantiate(
|
2685
|
+
def instantiate(instantiation_context, _enclosure)
|
2723
2686
|
_params = {
|
2724
|
-
:labels => @labels.collect { |l| l == :default ? l : l.instantiate(
|
2687
|
+
:labels => @labels.collect { |l| l == :default ? l : l.instantiate(instantiation_context) },
|
2725
2688
|
}
|
2726
|
-
super(
|
2689
|
+
super(instantiation_context, _enclosure, _params)
|
2727
2690
|
end
|
2728
2691
|
end # UnionMember
|
2729
2692
|
|
2730
2693
|
class Enum < Leaf
|
2731
|
-
NAMETYPE = :class
|
2732
2694
|
attr_reader :idltype
|
2733
2695
|
def initialize(_name, _enclosure, params)
|
2734
2696
|
super(_name, _enclosure)
|
@@ -2754,14 +2716,13 @@ module IDL::AST
|
|
2754
2716
|
@enums << n
|
2755
2717
|
end
|
2756
2718
|
|
2757
|
-
def instantiate(
|
2758
|
-
super(
|
2719
|
+
def instantiate(instantiation_context, _enclosure)
|
2720
|
+
super(instantiation_context, _enclosure, {})
|
2759
2721
|
end
|
2760
2722
|
|
2761
2723
|
end # Enum
|
2762
2724
|
|
2763
2725
|
class Enumerator < Leaf
|
2764
|
-
NAMETYPE = :class
|
2765
2726
|
attr_reader :idltype, :enum, :value
|
2766
2727
|
def initialize(_name, _enclosure, params)
|
2767
2728
|
super(_name, _enclosure)
|
@@ -2782,17 +2743,16 @@ module IDL::AST
|
|
2782
2743
|
super(vars)
|
2783
2744
|
end
|
2784
2745
|
|
2785
|
-
def instantiate(
|
2746
|
+
def instantiate(instantiation_context, _enclosure)
|
2786
2747
|
# find already instantiated Enum parent
|
2787
2748
|
_enum = _enclosure.resolve(@enum.name)
|
2788
2749
|
raise "Unable to resolve instantiated Enum scope for enumerator #{@enum.name}::#{name} instantiation" unless _enum
|
2789
|
-
super(
|
2750
|
+
super(instantiation_context, _enclosure, { :enum => _enum, :value => @value })
|
2790
2751
|
end
|
2791
2752
|
end # Enumerator
|
2792
2753
|
|
2793
2754
|
class Typedef < Leaf
|
2794
2755
|
attr_reader :idltype
|
2795
|
-
NAMETYPE = :class
|
2796
2756
|
def initialize(_name, _enclosure, params)
|
2797
2757
|
super(_name, _enclosure)
|
2798
2758
|
@idltype = params[:type]
|
@@ -2811,8 +2771,8 @@ module IDL::AST
|
|
2811
2771
|
super(vars)
|
2812
2772
|
end
|
2813
2773
|
|
2814
|
-
def instantiate(
|
2815
|
-
super(
|
2774
|
+
def instantiate(instantiation_context, _enclosure)
|
2775
|
+
super(instantiation_context, _enclosure, { :type => @idltype.instantiate(instantiation_context) })
|
2816
2776
|
end
|
2817
2777
|
end # Typedef
|
2818
2778
|
end
|