Changes in src/Parser/ExpressionNode.cc [513e165:beec62c]
- File:
-
- 1 edited
-
src/Parser/ExpressionNode.cc (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/ExpressionNode.cc
r513e165 rbeec62c 10 10 // Created On : Sat May 16 13:17:07 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Wed Sep 13 14:54:19 201713 // Update Count : 6 8312 // Last Modified On : Tue Sep 12 10:00:29 2017 13 // Update Count : 672 14 14 // 15 15 … … 250 250 sepString( str, units, '"' ); // separate constant from units 251 251 252 Type * strtype;253 switch ( str[0] ) { // str has >= 2 characters, i.e, null string "" => safe to look at subscripts 0/1252 BasicType::Kind strtype = BasicType::Char; // default string type 253 switch ( str[0] ) { // str has >= 2 characters, i.e, null string "" 254 254 case 'u': 255 if ( str[1] == '8' ) goto Default; // utf-8 characters => array of char 256 // lookup type of associated typedef 257 strtype = new TypeInstType( Type::Qualifiers( Type::Const ), "char16_t", false ); 255 if ( str[1] == '8' ) break; // utf-8 characters 256 strtype = BasicType::ShortUnsignedInt; 258 257 break; 259 258 case 'U': 260 strtype = new TypeInstType( Type::Qualifiers( Type::Const ), "char32_t", false );259 strtype = BasicType::UnsignedInt; 261 260 break; 262 261 case 'L': 263 strtype = new TypeInstType( Type::Qualifiers( Type::Const ), "wchar_t", false );262 strtype = BasicType::SignedInt; 264 263 break; 265 Default: // char default string type266 default:267 strtype = new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char );268 264 } // switch 269 ArrayType * at = new ArrayType( noQualifiers, strtype,265 ArrayType * at = new ArrayType( noQualifiers, new BasicType( Type::Qualifiers( Type::Const ), strtype ), 270 266 new ConstantExpr( Constant::from_ulong( str.size() + 1 - 2 ) ), // +1 for '\0' and -2 for '"' 271 267 false, false ); … … 348 344 349 345 Expression * build_virtual_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ) { 350 return new VirtualCastExpr( maybeMoveBuild< Expression >( expr_node ), maybeMoveBuildType( decl_node ) ); 346 Type * targetType = maybeMoveBuildType( decl_node ); 347 Expression * castArg = maybeMoveBuild< Expression >( expr_node ); 348 return new VirtualCastExpr( castArg, targetType ); 351 349 } // build_virtual_cast 352 350 353 351 Expression * build_fieldSel( ExpressionNode * expr_node, Expression * member ) { 354 return new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) ); 352 UntypedMemberExpr * ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) ); 353 return ret; 355 354 } // build_fieldSel 356 355 … … 364 363 365 364 Expression * build_addressOf( ExpressionNode * expr_node ) { 366 return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );365 return new AddressExpr( maybeMoveBuild< Expression >(expr_node) ); 367 366 } // build_addressOf 368 367 … … 423 422 } // build_cond 424 423 424 Expression * build_comma( ExpressionNode * expr_node1, ExpressionNode * expr_node2 ) { 425 return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) ); 426 } // build_comma 427 425 428 Expression * build_attrexpr( NameExpr * var, ExpressionNode * expr_node ) { 426 429 return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) ); … … 446 449 return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) ); 447 450 } // build_range 451 452 Expression * build_asmexpr( ExpressionNode * inout, Expression * constraint, ExpressionNode * operand ) { 453 return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) ); 454 } // build_asmexpr 455 456 Expression * build_valexpr( StatementNode * s ) { 457 return new StmtExpr( dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(s) ) ); 458 } // build_valexpr 459 460 Expression * build_typevalue( DeclarationNode * decl ) { 461 return new TypeExpr( maybeMoveBuildType( decl ) ); 462 } // build_typevalue 448 463 449 464 Expression * build_compoundLiteral( DeclarationNode * decl_node, InitializerNode * kids ) {
Note:
See TracChangeset
for help on using the changeset viewer.