source: src/SynTree/CommaExpr.cc @ ba01b14

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpersistent-indexerpthread-emulationqualifiedEnum
Last change on this file since ba01b14 was bf4b4cf, checked in by Rob Schluntz <rschlunt@…>, 7 years ago

Remove argName from Expression.

If named arguments are ever considered again, they should be added in UntypedExpr? (and maybe also ApplicationExpr?) to avoid unnecessary fields in every Expression. Like designators on initializers, it should be much easier to work with argument names at the call expression level.

  • Property mode set to 100644
File size: 1.7 KB
RevLine 
[0dd3a2f]1//
2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
[a5a71d0]7// CommaExpr.cc --
[0dd3a2f]8//
9// Author           : Richard C. Bilson
10// Created On       : Mon May 18 07:44:20 2015
[a5a71d0]11// Last Modified By : Rob Schluntz
[d7903b1]12// Last Modified On : Mon May 02 15:19:44 2016
[0dd3a2f]13// Update Count     : 1
14//
[51b7345]15
[ea6332d]16#include <ostream>           // for ostream, endl, operator<<, basic_ostream
17#include <string>            // for operator<<, string
18
19#include "Common/utility.h"  // for maybeClone
20#include "Expression.h"      // for CommaExpr, Expression
21#include "Type.h"            // for Type
[51b7345]22
[bf4b4cf]23CommaExpr::CommaExpr( Expression *arg1, Expression *arg2 )
24                : Expression(), arg1( arg1 ), arg2( arg2 ) {
[a5a71d0]25        // xxx - result of a comma expression is never an lvalue, so should set lvalue
[60089f4]26        // to false on all result types. Actually doing this causes some strange things
27        // to happen in later passes (particularly, Specialize, Lvalue, and Box). This needs to be looked into.
[906e24d]28        set_result( maybeClone( arg2->get_result() ) );
29        // get_type->set_isLvalue( false );
[51b7345]30}
31
32CommaExpr::CommaExpr( const CommaExpr &other )
[0dd3a2f]33                : Expression( other ), arg1( maybeClone( other.arg1 ) ), arg2( maybeClone( other.arg2 ) ) {
[51b7345]34}
35
[0dd3a2f]36CommaExpr::~CommaExpr() {
37        delete arg1;
38        delete arg2;
[51b7345]39}
40
[50377a4]41void CommaExpr::print( std::ostream &os, Indenter indent ) const {
[60089f4]42        os << "Comma Expression:" << std::endl;
[50377a4]43        os << (indent+1);
44        arg1->print( os, indent+1 );
[0dd3a2f]45        os << std::endl;
[50377a4]46        os << (indent+1);
47        arg2->print( os, indent+1 );
[0dd3a2f]48        Expression::print( os, indent );
[51b7345]49}
50
[0dd3a2f]51// Local Variables: //
52// tab-width: 4 //
53// mode: c++ //
54// compile-command: "make install" //
55// End: //
Note: See TracBrowser for help on using the repository browser.