ridl 2.2.5 → 2.5.5
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/lib/ridl/backend.rb +7 -8
- data/lib/ridl/delegate.rb +91 -24
- data/lib/ridl/genfile.rb +58 -23
- data/lib/ridl/node.rb +44 -12
- data/lib/ridl/optparse_ext.rb +3 -3
- data/lib/ridl/parser.rb +5 -5
- data/lib/ridl/parser.ry +5 -5
- data/lib/ridl/runner.rb +260 -197
- data/lib/ridl/scanner.rb +167 -144
- data/lib/ridl/version.rb +2 -2
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 487ad002804614ca82ead17a468922b304642d64
|
4
|
+
data.tar.gz: 419cd1417bbdd7498f589c245bf26ce50bb60b10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faf5353bc1a577cccf62034414744a012de908d8373bf38102edb5b6de39e970f223c140374278a2e7c86b6b00453351f9b123d20c4a93541a2c10cf35615e78
|
7
|
+
data.tar.gz: 6b3660bc7debee36367f8118c8114d49e6d05b7a9100902f567a59f8eb6d864adda462f838110b5fa5eec9b37143219933a023ddba2bc5617ca8e328a6b03d80
|
data/lib/ridl/backend.rb
CHANGED
@@ -51,7 +51,7 @@ module IDL
|
|
51
51
|
rescue LoadError => ex
|
52
52
|
IDL.error "ERROR: Cannot load RIDL backend [:#{be_name}]"
|
53
53
|
IDL.error ex.inspect
|
54
|
-
IDL.error(ex.backtrace.join("\n")) if
|
54
|
+
IDL.error(ex.backtrace.join("\n")) if IDL.verbose_level>0
|
55
55
|
exit 1
|
56
56
|
end
|
57
57
|
end
|
@@ -62,8 +62,9 @@ module IDL
|
|
62
62
|
@@backends[cfg.backend.name] = cfg.backend
|
63
63
|
end
|
64
64
|
|
65
|
-
|
66
|
-
|
65
|
+
# stop processing of current input and skip to next or exit RIDL
|
66
|
+
def self.stop_processing(msg='')
|
67
|
+
raise ProcessStop, msg, caller(1).first
|
67
68
|
end
|
68
69
|
|
69
70
|
def initialize(be_name, root, ttl, cpr, ver)
|
@@ -100,11 +101,9 @@ module IDL
|
|
100
101
|
end
|
101
102
|
|
102
103
|
def process_input(parser, params)
|
103
|
-
# process input top-down
|
104
|
-
|
105
|
-
|
106
|
-
end
|
107
|
-
true
|
104
|
+
# process input top-down
|
105
|
+
_process_input(parser, params)
|
106
|
+
@base_backends.each {|be| be.process_input(parser, params) }
|
108
107
|
end
|
109
108
|
|
110
109
|
@@null_be = nil
|
data/lib/ridl/delegate.rb
CHANGED
@@ -59,6 +59,9 @@ class Delegator
|
|
59
59
|
begin
|
60
60
|
@root, @includes = Marshal.load(f)
|
61
61
|
@cur = @root
|
62
|
+
rescue Exception => ex
|
63
|
+
IDL.error("RIDL - failed to load ORB pidlc [#{ex}]\n You probably need to rebuild the bootstrap file (compile orb.idl to orb.pidlc).")
|
64
|
+
exit(1)
|
62
65
|
ensure
|
63
66
|
f.close
|
64
67
|
end
|
@@ -68,6 +71,8 @@ class Delegator
|
|
68
71
|
return if @root
|
69
72
|
end
|
70
73
|
@root = @cur = IDL::AST::Module.new(nil, nil, {}) # global root
|
74
|
+
@last = nil
|
75
|
+
@last_pos = nil
|
71
76
|
end
|
72
77
|
def post_parse
|
73
78
|
if @preprocess
|
@@ -75,6 +80,16 @@ class Delegator
|
|
75
80
|
end
|
76
81
|
end
|
77
82
|
|
83
|
+
private
|
84
|
+
|
85
|
+
def set_last(node = nil)
|
86
|
+
@last = node
|
87
|
+
@last_pos = @scanner.position.dup if node
|
88
|
+
node
|
89
|
+
end
|
90
|
+
|
91
|
+
public
|
92
|
+
|
78
93
|
def visit_nodes(walker)
|
79
94
|
walker.visit_nodes(self)
|
80
95
|
end
|
@@ -199,21 +214,23 @@ class Delegator
|
|
199
214
|
@includes.has_key?(s)
|
200
215
|
end
|
201
216
|
|
202
|
-
def enter_include(s)
|
203
|
-
params = { :filename => s }
|
217
|
+
def enter_include(s, fullpath)
|
218
|
+
params = { :filename => s, :fullpath => fullpath }
|
204
219
|
params[:defined] = true
|
205
220
|
params[:preprocessed] = @preprocess
|
206
221
|
@cur = @cur.define(IDL::AST::Include, "$INC:"+s, params)
|
207
222
|
@includes[s] = @cur
|
223
|
+
set_last
|
208
224
|
@cur
|
209
225
|
end
|
210
226
|
|
211
227
|
def leave_include()
|
228
|
+
set_last
|
212
229
|
@cur = @cur.enclosure
|
213
230
|
end
|
214
231
|
|
215
232
|
def declare_include(s)
|
216
|
-
params = { :filename => s }
|
233
|
+
params = { :filename => s, :fullpath => @includes[s].fullpath }
|
217
234
|
params[:defined] = false
|
218
235
|
params[:preprocessed] = @includes[s].is_preprocessed?
|
219
236
|
@cur.define(IDL::AST::Include, "$INC:"+s, params)
|
@@ -259,18 +276,26 @@ class Delegator
|
|
259
276
|
type.node.set_repo_id(tid.to_s)
|
260
277
|
end
|
261
278
|
|
262
|
-
def define_annotation(annid, annbody)
|
263
|
-
IDL.log(3, "parsed Annotation #{annid}(#{annbody})")
|
264
|
-
@
|
279
|
+
def define_annotation(annid, annpos, anncomment, annbody)
|
280
|
+
IDL.log(3, "parsed #{anncomment ? 'commented ' : ''}Annotation #{annid}(#{annbody}) @ #{annpos}")
|
281
|
+
if anncomment && @last && (@last_pos.line == annpos.line) && (@last_pos.name == annpos.name)
|
282
|
+
IDL.log(3, 'adding annotation to last node')
|
283
|
+
@last.annotations << IDL::AST::Annotation.new(annid, annbody)
|
284
|
+
else
|
285
|
+
IDL.log(3, 'appending annotation cached stack')
|
286
|
+
@annotation_stack << IDL::AST::Annotation.new(annid, annbody)
|
287
|
+
end
|
265
288
|
end
|
266
289
|
|
267
290
|
def define_module(name)
|
268
291
|
@cur = @cur.define(IDL::AST::Module, name)
|
269
292
|
@cur.annotations.concat(@annotation_stack) unless @annotation_stack.empty?
|
270
293
|
@annotation_stack.clear
|
294
|
+
set_last
|
271
295
|
@cur
|
272
296
|
end
|
273
297
|
def end_module(node)
|
298
|
+
set_last(@cur)
|
274
299
|
@cur = @cur.enclosure # must equals to argument mod
|
275
300
|
end
|
276
301
|
|
@@ -285,6 +310,7 @@ class Delegator
|
|
285
310
|
@cur = @cur.define(IDL::AST::TemplateModule, names[0])
|
286
311
|
@cur.annotations.concat(@annotation_stack) unless @annotation_stack.empty?
|
287
312
|
@annotation_stack.clear
|
313
|
+
set_last
|
288
314
|
@cur
|
289
315
|
end
|
290
316
|
alias :end_template_module :end_module
|
@@ -298,20 +324,23 @@ class Delegator
|
|
298
324
|
params = { :type => type }
|
299
325
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
300
326
|
@annotation_stack.clear
|
301
|
-
@cur.define(IDL::AST::TemplateParam, name, params)
|
327
|
+
set_last(@cur.define(IDL::AST::TemplateParam, name, params))
|
328
|
+
@cur
|
302
329
|
end
|
303
330
|
|
304
331
|
def instantiate_template_module(name, parameters)
|
305
332
|
tmp = @template_module_name
|
306
333
|
@template_module_name = nil # reset
|
307
334
|
template_type = parse_scopedname(*tmp)
|
308
|
-
mod_inst = @cur.define(IDL::AST::Module, name)
|
309
|
-
mod_inst.annotations.concat(@annotation_stack) unless @annotation_stack.empty?
|
310
|
-
@annotation_stack.clear
|
311
335
|
unless template_type.node.is_a?(IDL::AST::TemplateModule)
|
312
336
|
raise RuntimeError, "invalid module template specification: #{template_type.node.typename} #{template_type.node.scoped_lm_name}"
|
313
337
|
end
|
314
|
-
template_type.node
|
338
|
+
params = { :template => template_type.node, :template_params => parameters }
|
339
|
+
mod_inst = @cur.define(IDL::AST::Module, name, params)
|
340
|
+
mod_inst.annotations.concat(@annotation_stack) unless @annotation_stack.empty?
|
341
|
+
@annotation_stack.clear
|
342
|
+
set_last(mod_inst.template.instantiate(mod_inst))
|
343
|
+
@cur
|
315
344
|
end
|
316
345
|
|
317
346
|
def declare_template_reference(name, type, tpl_params)
|
@@ -320,7 +349,8 @@ class Delegator
|
|
320
349
|
params[:tpl_params] = tpl_params || []
|
321
350
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
322
351
|
@annotation_stack.clear
|
323
|
-
@cur.define(IDL::AST::TemplateModuleReference, name, params)
|
352
|
+
set_last(@cur.define(IDL::AST::TemplateModuleReference, name, params))
|
353
|
+
@cur
|
324
354
|
end
|
325
355
|
|
326
356
|
def declare_interface(name, attrib=nil)
|
@@ -332,6 +362,8 @@ class Delegator
|
|
332
362
|
raise RuntimeError,
|
333
363
|
"annotations with forward declaration of #{name} not allowed" unless @annotation_stack.empty?
|
334
364
|
@cur.define(IDL::AST::Interface, name, params)
|
365
|
+
set_last
|
366
|
+
@cur
|
335
367
|
end
|
336
368
|
|
337
369
|
def define_interface(name, attrib, inherits = [])
|
@@ -343,9 +375,11 @@ class Delegator
|
|
343
375
|
params[:inherits] = inherits
|
344
376
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
345
377
|
@annotation_stack.clear
|
378
|
+
set_last
|
346
379
|
@cur = @cur.define(IDL::AST::Interface, name, params)
|
347
380
|
end
|
348
381
|
def end_interface(node)
|
382
|
+
set_last(@cur)
|
349
383
|
@cur = @cur.enclosure # must equals to argument mod
|
350
384
|
end
|
351
385
|
|
@@ -357,10 +391,12 @@ class Delegator
|
|
357
391
|
params[:supports] = supports || []
|
358
392
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
359
393
|
@annotation_stack.clear
|
394
|
+
set_last
|
360
395
|
@cur = @cur.define(IDL::AST::Home, name, params)
|
361
396
|
end
|
362
397
|
|
363
398
|
def end_home(node)
|
399
|
+
set_last(@cur)
|
364
400
|
@cur = @cur.enclosure
|
365
401
|
end
|
366
402
|
|
@@ -369,6 +405,7 @@ class Delegator
|
|
369
405
|
params[:forward] = true
|
370
406
|
raise RuntimeError,
|
371
407
|
"annotations with forward declaration of #{name} not allowed" unless @annotation_stack.empty?
|
408
|
+
set_last
|
372
409
|
@cur.define(IDL::AST::Component, name, params)
|
373
410
|
end
|
374
411
|
|
@@ -378,10 +415,12 @@ class Delegator
|
|
378
415
|
params[:supports] = supports || []
|
379
416
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
380
417
|
@annotation_stack.clear
|
418
|
+
set_last
|
381
419
|
@cur = @cur.define(IDL::AST::Component, name, params)
|
382
420
|
end
|
383
421
|
|
384
422
|
def end_component(node)
|
423
|
+
set_last(@cur)
|
385
424
|
@cur = @cur.enclosure
|
386
425
|
end
|
387
426
|
|
@@ -390,10 +429,12 @@ class Delegator
|
|
390
429
|
params[:base] = base
|
391
430
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
392
431
|
@annotation_stack.clear
|
432
|
+
set_last
|
393
433
|
@cur = @cur.define(IDL::AST::Connector, name, params)
|
394
434
|
end
|
395
435
|
|
396
436
|
def end_connector(node)
|
437
|
+
set_last(@cur)
|
397
438
|
@cur = @cur.enclosure
|
398
439
|
end
|
399
440
|
|
@@ -401,10 +442,12 @@ class Delegator
|
|
401
442
|
params = {}
|
402
443
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
403
444
|
@annotation_stack.clear
|
445
|
+
set_last
|
404
446
|
@cur = @cur.define(IDL::AST::Porttype, name, params)
|
405
447
|
end
|
406
448
|
|
407
449
|
def end_porttype(node)
|
450
|
+
set_last(@cur)
|
408
451
|
@cur = @cur.enclosure
|
409
452
|
end
|
410
453
|
|
@@ -415,7 +458,8 @@ class Delegator
|
|
415
458
|
params[:multiple] = multiple
|
416
459
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
417
460
|
@annotation_stack.clear
|
418
|
-
@cur.define(IDL::AST::Port, name, params)
|
461
|
+
set_last(@cur.define(IDL::AST::Port, name, params))
|
462
|
+
@cur
|
419
463
|
end
|
420
464
|
|
421
465
|
def declare_eventtype(name, attrib=nil)
|
@@ -424,6 +468,7 @@ class Delegator
|
|
424
468
|
params[:forward] = true
|
425
469
|
raise RuntimeError,
|
426
470
|
"annotations with forward declaration of #{name} not allowed" unless @annotation_stack.empty?
|
471
|
+
set_last
|
427
472
|
@cur.define(IDL::AST::Eventtype, name, params)
|
428
473
|
@cur
|
429
474
|
end
|
@@ -436,6 +481,7 @@ class Delegator
|
|
436
481
|
params[:inherits] = inherits
|
437
482
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
438
483
|
@annotation_stack.clear
|
484
|
+
set_last
|
439
485
|
@cur = @cur.define(IDL::AST::Eventtype, name, params)
|
440
486
|
@cur
|
441
487
|
end
|
@@ -446,6 +492,7 @@ class Delegator
|
|
446
492
|
params[:forward] = true
|
447
493
|
raise RuntimeError,
|
448
494
|
"annotations with forward declaration of #{name} not allowed" unless @annotation_stack.empty?
|
495
|
+
set_last
|
449
496
|
@cur.define(IDL::AST::Valuetype, name, params)
|
450
497
|
@cur
|
451
498
|
end
|
@@ -458,12 +505,14 @@ class Delegator
|
|
458
505
|
params[:inherits] = inherits
|
459
506
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
460
507
|
@annotation_stack.clear
|
508
|
+
set_last
|
461
509
|
@cur = @cur.define(IDL::AST::Valuetype, name, params)
|
462
510
|
@cur
|
463
511
|
end
|
464
512
|
|
465
513
|
def end_valuetype(node)
|
466
514
|
node.defined = true
|
515
|
+
set_last(@cur)
|
467
516
|
ret = IDL::Type::ScopedName.new(@cur)
|
468
517
|
@cur = @cur.enclosure # must equals to argument mod
|
469
518
|
ret
|
@@ -476,7 +525,7 @@ class Delegator
|
|
476
525
|
params[:visibility] = (public_ ? :public : :private)
|
477
526
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
478
527
|
@annotation_stack.clear
|
479
|
-
@cur.define(IDL::AST::StateMember, name, params)
|
528
|
+
set_last(@cur.define(IDL::AST::StateMember, name, params))
|
480
529
|
@cur
|
481
530
|
end
|
482
531
|
|
@@ -484,7 +533,7 @@ class Delegator
|
|
484
533
|
params = { :type => type }
|
485
534
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
486
535
|
@annotation_stack.clear
|
487
|
-
@cur.define(IDL::AST::Valuebox, name, params)
|
536
|
+
set_last(@cur.define(IDL::AST::Valuebox, name, params))
|
488
537
|
@cur
|
489
538
|
end
|
490
539
|
|
@@ -494,7 +543,7 @@ class Delegator
|
|
494
543
|
params[:raises] = raises_
|
495
544
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
496
545
|
@annotation_stack.clear
|
497
|
-
@cur.define(IDL::AST::Initializer, name, params)
|
546
|
+
set_last(@cur.define(IDL::AST::Initializer, name, params))
|
498
547
|
@cur
|
499
548
|
end
|
500
549
|
|
@@ -504,7 +553,7 @@ class Delegator
|
|
504
553
|
params[:raises] = raises_
|
505
554
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
506
555
|
@annotation_stack.clear
|
507
|
-
@cur.define(IDL::AST::Finder, name, params)
|
556
|
+
set_last(@cur.define(IDL::AST::Finder, name, params))
|
508
557
|
@cur
|
509
558
|
end
|
510
559
|
|
@@ -597,7 +646,7 @@ class Delegator
|
|
597
646
|
params = { :type => _type, :expression => _expression }
|
598
647
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
599
648
|
@annotation_stack.clear
|
600
|
-
|
649
|
+
set_last(@cur.define(IDL::AST::Const, _name, params))
|
601
650
|
@cur
|
602
651
|
end
|
603
652
|
|
@@ -607,6 +656,7 @@ class Delegator
|
|
607
656
|
params[:type] = _type
|
608
657
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
609
658
|
@annotation_stack.clear
|
659
|
+
set_last
|
610
660
|
@cur = @cur.define(IDL::AST::Operation, _name, params)
|
611
661
|
end
|
612
662
|
def declare_op_parameter(_attribute, _type, _name)
|
@@ -615,7 +665,8 @@ class Delegator
|
|
615
665
|
params[:type] = _type
|
616
666
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
617
667
|
@annotation_stack.clear
|
618
|
-
@cur.define(IDL::AST::Parameter, _name, params)
|
668
|
+
set_last(@cur.define(IDL::AST::Parameter, _name, params))
|
669
|
+
@cur
|
619
670
|
end
|
620
671
|
def declare_op_footer(_raises, _context)
|
621
672
|
@cur.raises = _raises || []
|
@@ -623,6 +674,7 @@ class Delegator
|
|
623
674
|
if not @cur.context.nil?
|
624
675
|
raise RuntimeError, "context phrase's not supported"
|
625
676
|
end
|
677
|
+
set_last(@cur)
|
626
678
|
@cur = @cur.enclosure
|
627
679
|
end
|
628
680
|
|
@@ -632,13 +684,14 @@ class Delegator
|
|
632
684
|
params[:readonly] = _readonly
|
633
685
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
634
686
|
@annotation_stack.clear
|
635
|
-
@cur.define(IDL::AST::Attribute, _name, params)
|
687
|
+
set_last(@cur.define(IDL::AST::Attribute, _name, params))
|
636
688
|
end
|
637
689
|
|
638
690
|
def declare_struct(_name)
|
639
691
|
params = { :forward => true }
|
640
692
|
raise RuntimeError,
|
641
693
|
"annotations with forward declaration of #{name} not allowed" unless @annotation_stack.empty?
|
694
|
+
set_last
|
642
695
|
@cur.define(IDL::AST::Struct, _name, params)
|
643
696
|
@cur
|
644
697
|
end
|
@@ -646,6 +699,7 @@ class Delegator
|
|
646
699
|
params = { :forward => false }
|
647
700
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
648
701
|
@annotation_stack.clear
|
702
|
+
set_last
|
649
703
|
@cur = @cur.define(IDL::AST::Struct, _name, params)
|
650
704
|
end
|
651
705
|
def declare_member(_type, _name)
|
@@ -653,10 +707,12 @@ class Delegator
|
|
653
707
|
params[:type] = _type
|
654
708
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
655
709
|
@annotation_stack.clear
|
656
|
-
@cur.define(IDL::AST::Member, _name, params)
|
710
|
+
set_last(@cur.define(IDL::AST::Member, _name, params))
|
711
|
+
@cur
|
657
712
|
end
|
658
713
|
def end_struct(node)
|
659
714
|
node.defined = true
|
715
|
+
set_last(@cur)
|
660
716
|
ret = IDL::Type::ScopedName.new(@cur)
|
661
717
|
@cur = @cur.enclosure
|
662
718
|
ret
|
@@ -665,9 +721,11 @@ class Delegator
|
|
665
721
|
params = { :forward => false }
|
666
722
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
667
723
|
@annotation_stack.clear
|
724
|
+
set_last
|
668
725
|
@cur = @cur.define(IDL::AST::Exception, _name, params)
|
669
726
|
end
|
670
727
|
def end_exception(node)
|
728
|
+
set_last(@cur)
|
671
729
|
ret = IDL::Type::ScopedName.new(@cur)
|
672
730
|
@cur = @cur.enclosure
|
673
731
|
ret
|
@@ -677,6 +735,7 @@ class Delegator
|
|
677
735
|
params = { :forward => true }
|
678
736
|
raise RuntimeError,
|
679
737
|
"annotations with forward declaration of #{name} not allowed" unless @annotation_stack.empty?
|
738
|
+
set_last
|
680
739
|
@cur.define(IDL::AST::Union, _name, params)
|
681
740
|
@cur
|
682
741
|
end
|
@@ -684,10 +743,13 @@ class Delegator
|
|
684
743
|
params = { :forward => false }
|
685
744
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
686
745
|
@annotation_stack.clear
|
746
|
+
set_last
|
687
747
|
@cur = @cur.define(IDL::AST::Union, _name, params)
|
688
748
|
end
|
689
749
|
def define_union_switchtype(union_node, switchtype)
|
690
750
|
union_node.set_switchtype(switchtype)
|
751
|
+
union_node.annotations.concat(@annotation_stack) unless @annotation_stack.empty?
|
752
|
+
@annotation_stack.clear
|
691
753
|
union_node
|
692
754
|
end
|
693
755
|
def define_case(_labels, _type, _name)
|
@@ -696,11 +758,13 @@ class Delegator
|
|
696
758
|
params[:labels] = _labels
|
697
759
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
698
760
|
@annotation_stack.clear
|
699
|
-
@cur.define(IDL::AST::UnionMember, _name, params)
|
761
|
+
set_last(@cur.define(IDL::AST::UnionMember, _name, params))
|
762
|
+
@cur
|
700
763
|
end
|
701
764
|
def end_union(node)
|
702
765
|
node.validate_labels
|
703
766
|
node.defined = true
|
767
|
+
set_last(@cur)
|
704
768
|
ret = IDL::Type::ScopedName.new(@cur)
|
705
769
|
@cur = @cur.enclosure
|
706
770
|
ret
|
@@ -710,6 +774,7 @@ class Delegator
|
|
710
774
|
params = {}
|
711
775
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
712
776
|
@annotation_stack.clear
|
777
|
+
set_last
|
713
778
|
@cur = @cur.define(IDL::AST::Enum, _name, params)
|
714
779
|
end
|
715
780
|
def declare_enumerator(_name)
|
@@ -720,10 +785,11 @@ class Delegator
|
|
720
785
|
}
|
721
786
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
722
787
|
@annotation_stack.clear
|
723
|
-
@cur.enclosure.define(IDL::AST::Enumerator, _name, params)
|
788
|
+
set_last(@cur.enclosure.define(IDL::AST::Enumerator, _name, params))
|
724
789
|
@cur
|
725
790
|
end
|
726
791
|
def end_enum(node)
|
792
|
+
set_last(@cur)
|
727
793
|
ret = IDL::Type::ScopedName.new(@cur)
|
728
794
|
@cur = @cur.enclosure
|
729
795
|
ret
|
@@ -734,7 +800,8 @@ class Delegator
|
|
734
800
|
params[:type] = _type
|
735
801
|
params[:annotations] = @annotation_stack.dup unless @annotation_stack.empty?
|
736
802
|
@annotation_stack.clear
|
737
|
-
@cur.define(IDL::AST::Typedef, _name, params)
|
803
|
+
set_last(@cur.define(IDL::AST::Typedef, _name, params))
|
804
|
+
@cur
|
738
805
|
end
|
739
806
|
end # Delegator
|
740
807
|
end # IDL
|