Ignore:
Timestamp:
Sep 1, 2017, 4:26:14 PM (4 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
5809461, ba2a68b
Parents:
78a0b88
Message:

Handle user-defined literals in OperatorTable?, 0/1 from operator table

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/OperatorTable.cc

    r78a0b88 rbc3127d  
    1919
    2020#include "OperatorTable.h"
     21#include "Common/utility.h"
    2122
    2223namespace CodeGen {
     
    6566                        {       "?^=?",         "^=",   "_operator_bitxorassign",               OT_INFIXASSIGN          },
    6667                        {       "?|=?",         "|=",   "_operator_bitorassign",                OT_INFIXASSIGN          },
    67                         {       "&&",           "&&",   "&&",                                                   OT_LABELADDRESS         },
    68                         {       "0",            "0",    "_constant_zero",                               OT_CONSTANT                     },
    69                         {       "1",            "1",    "_constant_one",                                OT_CONSTANT                     }
     68                        {       "&&",           "&&",   "&&",                                                   OT_LABELADDRESS         }
    7069                };
    7170
     
    8685                        initialize();
    8786                } // if
     87
    8888                std::map< std::string, OperatorInfo >::const_iterator i = table.find( funcName );
    8989                if ( i == table.end() ) {
     90                        if ( isPrefix( funcName, "?`" ) ) {
     91                                // handle literal suffixes, which are user-defined postfix operators
     92                                info.inputName = funcName;
     93                                info.symbol = funcName.substr(2);
     94                                info.outputName = toString( "__operator_literal_", info.symbol );
     95                                info.type = OT_POSTFIX;
     96                                return true;
     97                        }
    9098                        return false;
    9199                } else {
Note: See TracChangeset for help on using the changeset viewer.