Changeset ecf3812 for src/CodeGen


Ignore:
Timestamp:
Nov 19, 2024, 5:02:03 PM (10 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
master
Children:
d945be9
Parents:
29075d1
Message:

CastExpr reorganization and clean-up in Lvalue. I kept these from a fix that is not working.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cpp

    r29075d1 recf3812  
    680680        extension( expr );
    681681        output << "(";
    682         if ( expr->result->isVoid() ) {
    683                 output << "(void)";
    684         } else {
    685                 output << "(";
     682        switch ( expr->kind ) {
     683        case ast::CCast:
     684                if ( expr->result->isVoid() ) {
     685                        output << "(void)";
     686                } else {
     687                        output << "(";
     688                        output << genType( expr->result, "", options );
     689                        output << ")";
     690                }
     691                break;
     692        case ast::CoerceCast:
     693                assertf( ast::CoerceCast != expr->kind, "Coercion cast is not implemented." );
     694                // And likely shouldn't reach code generation when it is implemented.
     695                break;
     696        case ast::ReturnCast:
     697                // This should be invisible in the resulting C code.
     698                // Can we insert a check here?
     699                //assert( ResolvExpr::typesCompatable(???) );
     700                if ( options.genC ) break;
     701                output << "(return ";
    686702                output << genType( expr->result, "", options );
    687703                output << ")";
     704                break;
    688705        }
    689706        expr->arg->accept( *visitor );
Note: See TracChangeset for help on using the changeset viewer.