~ubuntu-branches/ubuntu/hardy/vala/hardy

« back to all changes in this revision

Viewing changes to vala/valacodecontext.vala

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge, Marc-Andre Lureau, Sebastian Dröge
  • Date: 2007-10-15 14:37:51 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20071015143751-zy7hqcyjutdyfkg3
Tags: 0.1.4-1
[ Marc-Andre Lureau ]
* New Upstream Version
* debian/patches:
  + Remove patch no longer needed in 0.1.4
* debian/rules
  + Add xsltproc build dependency for the Vala manual.
  + Add libenchant-dev build dependency for enchant test case.
* debian/control, debian/vala-doc.install:
  + Add a "vala-doc" documentation package.

[ Sebastian Dröge ]
* debian/control:
  + Let vala-doc suggest valac/devhelp and don't depend on libvala0.
* debian/libvala-dev.install:
  + Add the new vapicheck utility.

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
 * This library is free software; you can redistribute it and/or
6
6
 * modify it under the terms of the GNU Lesser General Public
7
7
 * License as published by the Free Software Foundation; either
8
 
 * version 2 of the License, or (at your option) any later version.
 
8
 * version 2.1 of the License, or (at your option) any later version.
9
9
 
10
10
 * This library is distributed in the hope that it will be useful,
11
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26
26
/**
27
27
 * The root of the code tree.
28
28
 */
29
 
public class Vala.CodeContext {
 
29
public class Vala.CodeContext : Object {
30
30
        /**
31
31
         * Specifies the name of the library to be built.
32
32
         *
66
66
        public string output { get; set; }
67
67
 
68
68
        /**
 
69
         * Base source directory.
 
70
         */
 
71
        public string basedir { get; set; }
 
72
 
 
73
        /**
 
74
         * Code output directory.
 
75
         */
 
76
        public string directory { get; set; }
 
77
 
 
78
        /**
69
79
         * Produce debug information.
70
80
         */
71
81
        public bool debug { get; set; }
85
95
         */
86
96
        public Method module_init_method { get; set; }
87
97
 
 
98
        /**
 
99
         * Keep temporary files produced by the compiler.
 
100
         */
 
101
        public bool save_temps { get; set; }
 
102
 
 
103
        public bool save_csources {
 
104
                get { return save_temps; }
 
105
        }
 
106
 
 
107
        public bool save_cheaders {
 
108
                get { return save_csources || null != library; }
 
109
        }
 
110
 
88
111
        private Gee.List<SourceFile> source_files = new ArrayList<SourceFile> ();
 
112
        private Gee.List<string> c_source_files = new ArrayList<string> ();
89
113
        private Namespace! _root = new Namespace (null);
90
114
        
91
115
        private Gee.List<SourceFileCycle> cycles = new ArrayList<SourceFileCycle> ();
100
124
        public Namespace! root {
101
125
                get { return _root; }
102
126
        }
103
 
        
 
127
 
 
128
        /**
 
129
         * The selected code generator.
 
130
         */
 
131
        public CodeGenerator codegen { get; set; }
 
132
 
 
133
        public CodeContext () {
 
134
        }
 
135
 
 
136
        construct {
 
137
                codegen = new CodeGenerator ();
 
138
        }
 
139
 
104
140
        /**
105
141
         * Returns a copy of the list of source files.
106
142
         *
109
145
        public Collection<SourceFile> get_source_files () {
110
146
                return new ReadOnlyCollection<SourceFile> (source_files);
111
147
        }
 
148
 
 
149
        /**
 
150
         * Returns a copy of the list of C source files.
 
151
         *
 
152
         * @return list of C source files
 
153
         */
 
154
        public Collection<string> get_c_source_files () {
 
155
                return new ReadOnlyCollection<string> (c_source_files);
 
156
        }
112
157
        
113
158
        /**
114
159
         * Adds the specified file to the list of source files.
120
165
        }
121
166
 
122
167
        /**
 
168
         * Adds the specified file to the list of C source files.
 
169
         *
 
170
         * @param file a C source file
 
171
         */
 
172
        public void add_c_source_file (string! file) {
 
173
                c_source_files.add (file);
 
174
        }
 
175
 
 
176
        /**
123
177
         * Returns a copy of the list of used packages.
124
178
         *
125
179
         * @return list of used packages
296
350
                /* mark file as successfully visited */
297
351
                file.mark = 2;
298
352
        }
 
353
 
 
354
        public Namespace! create_namespace (string name, SourceReference source_reference = null) {
 
355
                var node = new Namespace (name, source_reference);
 
356
                node.code_binding = codegen.create_namespace_binding (node);
 
357
                return node;
 
358
        }
 
359
 
 
360
        public Class! create_class (string! name, SourceReference source_reference = null) {
 
361
                var node = new Class (name, source_reference);
 
362
                node.code_binding = codegen.create_class_binding (node);
 
363
                return node;
 
364
        }
 
365
 
 
366
        public Struct! create_struct (string! name, SourceReference source_reference = null) {
 
367
                var node = new Struct (name, source_reference);
 
368
                node.code_binding = codegen.create_struct_binding (node);
 
369
                return node;
 
370
        }
 
371
 
 
372
        public Interface! create_interface (string! name, SourceReference source_reference = null) {
 
373
                var node = new Interface (name, source_reference);
 
374
                node.code_binding = codegen.create_interface_binding (node);
 
375
                return node;
 
376
        }
 
377
 
 
378
        public Enum! create_enum (string! name, SourceReference source_reference = null) {
 
379
                var node = new Enum (name, source_reference);
 
380
                node.code_binding = codegen.create_enum_binding (node);
 
381
                return node;
 
382
        }
 
383
 
 
384
        public EnumValue! create_enum_value (string! name) {
 
385
                var node = new EnumValue (name);
 
386
                node.code_binding = codegen.create_enum_value_binding (node);
 
387
                return node;
 
388
        }
 
389
 
 
390
        public EnumValue! create_enum_value_with_value (string! name, Expression value) {
 
391
                var node = new EnumValue.with_value (name, value);
 
392
                node.code_binding = codegen.create_enum_value_binding (node);
 
393
                return node;
 
394
        }
 
395
 
 
396
        public Callback! create_callback (string name, TypeReference return_type, SourceReference source_reference = null) {
 
397
                var node = new Callback (name, return_type, source_reference);
 
398
                node.code_binding = codegen.create_callback_binding (node);
 
399
                return node;
 
400
        }
 
401
 
 
402
        public Constant! create_constant (string! name, TypeReference! type_reference, Expression initializer, SourceReference source_reference) {
 
403
                var node = new Constant (name, type_reference, initializer, source_reference);
 
404
                node.code_binding = codegen.create_constant_binding (node);
 
405
                return node;
 
406
        }
 
407
 
 
408
        public Field! create_field (string! name, TypeReference! type_reference, Expression initializer, SourceReference source_reference = null) {
 
409
                var node = new Field (name, type_reference, initializer, source_reference);
 
410
                node.code_binding = codegen.create_field_binding (node);
 
411
                return node;
 
412
        }
 
413
 
 
414
        public Method! create_method (string name, TypeReference return_type, SourceReference source_reference = null) {
 
415
                var node = new Method (name, return_type, source_reference);
 
416
                node.code_binding = codegen.create_method_binding (node);
 
417
                return node;
 
418
        }
 
419
 
 
420
        public CreationMethod! create_creation_method (string name, SourceReference source_reference = null) {
 
421
                var node = new CreationMethod (name, source_reference);
 
422
                node.code_binding = codegen.create_creation_method_binding (node);
 
423
                return node;
 
424
        }
 
425
 
 
426
        public FormalParameter! create_formal_parameter (string! name, TypeReference type_reference, SourceReference source_reference = null) {
 
427
                var node = new FormalParameter (name, type_reference, source_reference);
 
428
                node.code_binding = codegen.create_formal_parameter_binding (node);
 
429
                return node;
 
430
        }
 
431
 
 
432
        public FormalParameter! create_formal_parameter_with_ellipsis (SourceReference source_reference = null) {
 
433
                var node = new FormalParameter.with_ellipsis (source_reference);
 
434
                node.code_binding = codegen.create_formal_parameter_binding (node);
 
435
                return node;
 
436
        }
 
437
 
 
438
        public Property! create_property (string! name, TypeReference! type_reference, PropertyAccessor get_accessor, PropertyAccessor set_accessor, SourceReference source_reference) {
 
439
                var node = new Property (name, type_reference, get_accessor, set_accessor, source_reference);
 
440
                node.code_binding = codegen.create_property_binding (node);
 
441
                return node;
 
442
        }
 
443
 
 
444
        public PropertyAccessor! create_property_accessor (bool readable, bool writable, bool construction, Block body, SourceReference source_reference) {
 
445
                var node = new PropertyAccessor (readable, writable, construction, body, source_reference);
 
446
                node.code_binding = codegen.create_property_accessor_binding (node);
 
447
                return node;
 
448
        }
 
449
 
 
450
        public Signal! create_signal (string! name, TypeReference! return_type, SourceReference source_reference = null) {
 
451
                var node = new Signal (name, return_type, source_reference);
 
452
                node.code_binding = codegen.create_signal_binding (node);
 
453
                return node;
 
454
        }
 
455
 
 
456
        public Constructor! create_constructor (SourceReference source_reference) {
 
457
                var node = new Constructor (source_reference);
 
458
                node.code_binding = codegen.create_constructor_binding (node);
 
459
                return node;
 
460
        }
 
461
 
 
462
        public Destructor! create_destructor (SourceReference source_reference = null) {
 
463
                var node = new Destructor (source_reference);
 
464
                node.code_binding = codegen.create_destructor_binding (node);
 
465
                return node;
 
466
        }
 
467
 
 
468
        public TypeParameter! create_type_parameter (string name, SourceReference source_reference) {
 
469
                var node = new TypeParameter (name, source_reference);
 
470
                node.code_binding = codegen.create_type_parameter_binding (node);
 
471
                return node;
 
472
        }
 
473
 
 
474
        public Block! create_block (SourceReference source_reference = null) {
 
475
                var node = new Block (source_reference);
 
476
                node.code_binding = codegen.create_block_binding (node);
 
477
                return node;
 
478
        }
 
479
 
 
480
        public EmptyStatement! create_empty_statement (SourceReference source_reference = null) {
 
481
                var node = new EmptyStatement (source_reference);
 
482
                node.code_binding = codegen.create_empty_statement_binding (node);
 
483
                return node;
 
484
        }
 
485
 
 
486
        public DeclarationStatement! create_declaration_statement (LocalVariableDeclaration! declaration, SourceReference source_reference) {
 
487
                var node = new DeclarationStatement (declaration, source_reference);
 
488
                node.code_binding = codegen.create_declaration_statement_binding (node);
 
489
                return node;
 
490
        }
 
491
 
 
492
        public LocalVariableDeclaration! create_local_variable_declaration (TypeReference type_reference, SourceReference source_reference) {
 
493
                var node = new LocalVariableDeclaration (type_reference, source_reference);
 
494
                node.code_binding = codegen.create_local_variable_declaration_binding (node);
 
495
                return node;
 
496
        }
 
497
 
 
498
        public LocalVariableDeclaration! create_local_variable_declaration_var_type (SourceReference source_reference) {
 
499
                var node = new LocalVariableDeclaration.var_type (source_reference);
 
500
                node.code_binding = codegen.create_local_variable_declaration_binding (node);
 
501
                return node;
 
502
        }
 
503
 
 
504
        public VariableDeclarator! create_variable_declarator (string! name, Expression initializer = null, SourceReference source_reference = null) {
 
505
                var node = new VariableDeclarator (name, initializer, source_reference);
 
506
                node.code_binding = codegen.create_variable_declarator_binding (node);
 
507
                return node;
 
508
        }
 
509
 
 
510
        public InitializerList! create_initializer_list (SourceReference source_reference) {
 
511
                var node = new InitializerList (source_reference);
 
512
                node.code_binding = codegen.create_initializer_list_binding (node);
 
513
                return node;
 
514
        }
 
515
 
 
516
        public ExpressionStatement! create_expression_statement (Expression! expression, SourceReference source_reference = null) {
 
517
                var node = new ExpressionStatement (expression, source_reference);
 
518
                node.code_binding = codegen.create_expression_statement_binding (node);
 
519
                return node;
 
520
        }
 
521
 
 
522
        public IfStatement! create_if_statement (Expression! condition, Block! true_statement, Block false_statement, SourceReference source_reference) {
 
523
                var node = new IfStatement (condition, true_statement, false_statement, source_reference);
 
524
                node.code_binding = codegen.create_if_statement_binding (node);
 
525
                return node;
 
526
        }
 
527
 
 
528
        public SwitchStatement! create_switch_statement (Expression! expression, SourceReference source_reference) {
 
529
                var node = new SwitchStatement (expression, source_reference);
 
530
                node.code_binding = codegen.create_switch_statement_binding (node);
 
531
                return node;
 
532
        }
 
533
 
 
534
        public SwitchSection! create_switch_section (SourceReference source_reference) {
 
535
                var node = new SwitchSection (source_reference);
 
536
                node.code_binding = codegen.create_switch_section_binding (node);
 
537
                return node;
 
538
        }
 
539
 
 
540
        public SwitchLabel! create_switch_label (Expression expression, SourceReference source_reference = null) {
 
541
                var node = new SwitchLabel (expression, source_reference);
 
542
                node.code_binding = codegen.create_switch_label_binding (node);
 
543
                return node;
 
544
        }
 
545
 
 
546
        public SwitchLabel! create_switch_label_with_default (SourceReference source_reference = null) {
 
547
                var node = new SwitchLabel.with_default (source_reference);
 
548
                node.code_binding = codegen.create_switch_label_binding (node);
 
549
                return node;
 
550
        }
 
551
 
 
552
        public WhileStatement! create_while_statement (Expression! condition, Block! body, SourceReference source_reference = null) {
 
553
                var node = new WhileStatement (condition, body, source_reference);
 
554
                node.code_binding = codegen.create_while_statement_binding (node);
 
555
                return node;
 
556
        }
 
557
 
 
558
        public DoStatement! create_do_statement (Block! body, Expression! condition, SourceReference source_reference = null) {
 
559
                var node = new DoStatement (body, condition, source_reference);
 
560
                node.code_binding = codegen.create_do_statement_binding (node);
 
561
                return node;
 
562
        }
 
563
 
 
564
        public ForStatement! create_for_statement (Expression condition, Block body, SourceReference source_reference = null) {
 
565
                var node = new ForStatement (condition, body, source_reference);
 
566
                node.code_binding = codegen.create_for_statement_binding (node);
 
567
                return node;
 
568
        }
 
569
 
 
570
        public ForeachStatement! create_foreach_statement (TypeReference! type_reference, string! variable_name, Expression! collection, Block body, SourceReference source_reference) {
 
571
                var node = new ForeachStatement (type_reference, variable_name, collection, body, source_reference);
 
572
                node.code_binding = codegen.create_foreach_statement_binding (node);
 
573
                return node;
 
574
        }
 
575
 
 
576
        public BreakStatement! create_break_statement (SourceReference source_reference) {
 
577
                var node = new BreakStatement (source_reference);
 
578
                node.code_binding = codegen.create_break_statement_binding (node);
 
579
                return node;
 
580
        }
 
581
 
 
582
        public ContinueStatement! create_continue_statement (SourceReference source_reference) {
 
583
                var node = new ContinueStatement (source_reference);
 
584
                node.code_binding = codegen.create_continue_statement_binding (node);
 
585
                return node;
 
586
        }
 
587
 
 
588
        public ReturnStatement! create_return_statement (Expression return_expression = null, SourceReference source_reference = null) {
 
589
                var node = new ReturnStatement (return_expression, source_reference);
 
590
                node.code_binding = codegen.create_return_statement_binding (node);
 
591
                return node;
 
592
        }
 
593
 
 
594
        public ThrowStatement! create_throw_statement (Expression! error_expression, SourceReference source_reference = null) {
 
595
                var node = new ThrowStatement (error_expression, source_reference);
 
596
                node.code_binding = codegen.create_throw_statement_binding (node);
 
597
                return node;
 
598
        }
 
599
 
 
600
        public TryStatement! create_try_statement (Block! body, Block finally_body, SourceReference source_reference = null) {
 
601
                var node = new TryStatement (body, finally_body, source_reference);
 
602
                node.code_binding = codegen.create_try_statement_binding (node);
 
603
                return node;
 
604
        }
 
605
 
 
606
        public CatchClause! create_catch_clause (TypeReference type_reference, string variable_name, Block body, SourceReference source_reference = null) {
 
607
                var node = new CatchClause (type_reference, variable_name, body, source_reference);
 
608
                node.code_binding = codegen.create_catch_clause_binding (node);
 
609
                return node;
 
610
        }
 
611
 
 
612
        public LockStatement! create_lock_statement (Expression resource, Block body, SourceReference source_reference = null) {
 
613
                var node = new LockStatement (resource, body, source_reference);
 
614
                node.code_binding = codegen.create_lock_statement_binding (node);
 
615
                return node;
 
616
        }
 
617
 
 
618
        public ArrayCreationExpression! create_array_creation_expression (TypeReference element_type, int rank, InitializerList initializer_list, SourceReference source_reference) {
 
619
                var node = new ArrayCreationExpression (element_type, rank, initializer_list, source_reference);
 
620
                node.code_binding = codegen.create_array_creation_expression_binding (node);
 
621
                return node;
 
622
        }
 
623
 
 
624
        public BooleanLiteral! create_boolean_literal (bool value, SourceReference source_reference) {
 
625
                var node = new BooleanLiteral (value, source_reference);
 
626
                node.code_binding = codegen.create_boolean_literal_binding (node);
 
627
                return node;
 
628
        }
 
629
 
 
630
        public CharacterLiteral! create_character_literal (string! value, SourceReference source_reference) {
 
631
                var node = new CharacterLiteral (value, source_reference);
 
632
                node.code_binding = codegen.create_character_literal_binding (node);
 
633
                return node;
 
634
        }
 
635
 
 
636
        public IntegerLiteral! create_integer_literal (string! value, SourceReference source_reference = null) {
 
637
                var node = new IntegerLiteral (value, source_reference);
 
638
                node.code_binding = codegen.create_integer_literal_binding (node);
 
639
                return node;
 
640
        }
 
641
 
 
642
        public RealLiteral! create_real_literal (string value, SourceReference source_reference) {
 
643
                var node = new RealLiteral (value, source_reference);
 
644
                node.code_binding = codegen.create_real_literal_binding (node);
 
645
                return node;
 
646
        }
 
647
 
 
648
        public StringLiteral! create_string_literal (string value, SourceReference source_reference) {
 
649
                var node = new StringLiteral (value, source_reference);
 
650
                node.code_binding = codegen.create_string_literal_binding (node);
 
651
                return node;
 
652
        }
 
653
 
 
654
        public NullLiteral! create_null_literal (SourceReference source_reference = null) {
 
655
                var node = new NullLiteral (source_reference);
 
656
                node.code_binding = codegen.create_null_literal_binding (node);
 
657
                return node;
 
658
        }
 
659
 
 
660
        public LiteralExpression! create_literal_expression (Literal! literal, SourceReference source_reference = null) {
 
661
                var node = new LiteralExpression (literal, source_reference);
 
662
                node.code_binding = codegen.create_literal_expression_binding (node);
 
663
                return node;
 
664
        }
 
665
 
 
666
        public ParenthesizedExpression! create_parenthesized_expression (Expression! inner, SourceReference source_reference) {
 
667
                var node = new ParenthesizedExpression (inner, source_reference);
 
668
                node.code_binding = codegen.create_parenthesized_expression_binding (node);
 
669
                return node;
 
670
        }
 
671
 
 
672
        public MemberAccess! create_member_access (Expression inner, string! member_name, SourceReference source_reference = null) {
 
673
                var node = new MemberAccess (inner, member_name, source_reference);
 
674
                node.code_binding = codegen.create_member_access_binding (node);
 
675
                return node;
 
676
        }
 
677
 
 
678
        public MemberAccess! create_member_access_simple (string! member_name, SourceReference source_reference = null) {
 
679
                var node = new MemberAccess.simple (member_name, source_reference);
 
680
                node.code_binding = codegen.create_member_access_binding (node);
 
681
                return node;
 
682
        }
 
683
 
 
684
        public InvocationExpression! create_invocation_expression (Expression! call, SourceReference source_reference = null) {
 
685
                var node = new InvocationExpression (call, source_reference);
 
686
                node.code_binding = codegen.create_invocation_expression_binding (node);
 
687
                return node;
 
688
        }
 
689
        
 
690
        public ElementAccess! create_element_access (Expression container, SourceReference source_reference) {
 
691
                var node = new ElementAccess (container, source_reference);
 
692
                node.code_binding = codegen.create_element_access_binding (node);
 
693
                return node;
 
694
        }
 
695
 
 
696
        public BaseAccess! create_base_access (SourceReference source_reference = null) {
 
697
                var node = new BaseAccess (source_reference);
 
698
                node.code_binding = codegen.create_base_access_binding (node);
 
699
                return node;
 
700
        }
 
701
 
 
702
        public PostfixExpression! create_postfix_expression (Expression! inner, bool increment, SourceReference source_reference) {
 
703
                var node = new PostfixExpression (inner, increment, source_reference);
 
704
                node.code_binding = codegen.create_postfix_expression_binding (node);
 
705
                return node;
 
706
        }
 
707
 
 
708
        public ObjectCreationExpression! create_object_creation_expression (MemberAccess! member_name, SourceReference source_reference) {
 
709
                var node = new ObjectCreationExpression (member_name, source_reference);
 
710
                node.code_binding = codegen.create_object_creation_expression_binding (node);
 
711
                return node;
 
712
        }
 
713
 
 
714
        public SizeofExpression! create_sizeof_expression (TypeReference! type_reference, SourceReference source_reference) {
 
715
                var node = new SizeofExpression (type_reference, source_reference);
 
716
                node.code_binding = codegen.create_sizeof_expression_binding (node);
 
717
                return node;
 
718
        }
 
719
 
 
720
        public TypeofExpression! create_typeof_expression (TypeReference! type_reference, SourceReference source_reference) {
 
721
                var node = new TypeofExpression (type_reference, source_reference);
 
722
                node.code_binding = codegen.create_typeof_expression_binding (node);
 
723
                return node;
 
724
        }
 
725
 
 
726
        public UnaryExpression! create_unary_expression (UnaryOperator operator, Expression! inner, SourceReference source_reference) {
 
727
                var node = new UnaryExpression (operator, inner, source_reference);
 
728
                node.code_binding = codegen.create_unary_expression_binding (node);
 
729
                return node;
 
730
        }
 
731
 
 
732
        public CastExpression! create_cast_expression (Expression! inner, TypeReference! type_reference, SourceReference source_reference, bool is_silent_cast) {
 
733
                var node = new CastExpression (inner, type_reference, source_reference, is_silent_cast);
 
734
                node.code_binding = codegen.create_cast_expression_binding (node);
 
735
                return node;
 
736
        }
 
737
 
 
738
        public PointerIndirection! create_pointer_indirection (Expression! inner, SourceReference source_reference = null) {
 
739
                var node = new PointerIndirection (inner, source_reference);
 
740
                node.code_binding = codegen.create_pointer_indirection_binding (node);
 
741
                return node;
 
742
        }
 
743
 
 
744
        public AddressofExpression! create_addressof_expression (Expression! inner, SourceReference source_reference = null) {
 
745
                var node = new AddressofExpression (inner, source_reference);
 
746
                node.code_binding = codegen.create_addressof_expression_binding (node);
 
747
                return node;
 
748
        }
 
749
 
 
750
        public ReferenceTransferExpression! create_reference_transfer_expression (Expression! inner, SourceReference source_reference = null) {
 
751
                var node = new ReferenceTransferExpression (inner, source_reference);
 
752
                node.code_binding = codegen.create_reference_transfer_expression_binding (node);
 
753
                return node;
 
754
        }
 
755
 
 
756
        public BinaryExpression! create_binary_expression (BinaryOperator operator, Expression! left, Expression! right, SourceReference source_reference = null) {
 
757
                var node = new BinaryExpression (operator, left, right, source_reference);
 
758
                node.code_binding = codegen.create_binary_expression_binding (node);
 
759
                return node;
 
760
        }
 
761
 
 
762
        public TypeCheck! create_type_check (Expression! expression, TypeReference! type_reference, SourceReference source_reference) {
 
763
                var node = new TypeCheck (expression, type_reference, source_reference);
 
764
                node.code_binding = codegen.create_type_check_binding (node);
 
765
                return node;
 
766
        }
 
767
 
 
768
        public ConditionalExpression! create_conditional_expression (Expression! condition, Expression! true_expression, Expression! false_expression, SourceReference source_reference) {
 
769
                var node = new ConditionalExpression (condition, true_expression, false_expression, source_reference);
 
770
                node.code_binding = codegen.create_conditional_expression_binding (node);
 
771
                return node;
 
772
        }
 
773
 
 
774
        public LambdaExpression! create_lambda_expression (Expression! expression_body, SourceReference source_reference) {
 
775
                var node = new LambdaExpression (expression_body, source_reference);
 
776
                node.code_binding = codegen.create_lambda_expression_binding (node);
 
777
                return node;
 
778
        }
 
779
 
 
780
        public LambdaExpression! create_lambda_expression_with_statement_body (Block! statement_body, SourceReference source_reference) {
 
781
                var node = new LambdaExpression.with_statement_body (statement_body, source_reference);
 
782
                node.code_binding = codegen.create_lambda_expression_binding (node);
 
783
                return node;
 
784
        }
 
785
 
 
786
        public Assignment! create_assignment (Expression! left, Expression! right, AssignmentOperator operator = AssignmentOperator.SIMPLE, SourceReference source_reference = null) {
 
787
                var node = new Assignment (left, right, operator, source_reference);
 
788
                node.code_binding = codegen.create_assignment_binding (node);
 
789
                return node;
 
790
        }
299
791
}