Changes in / [936a287:fbcde64]


Ignore:
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • doc/LaTeXmacros/common.tex

    r936a287 rfbcde64  
    4242\newcommand{\CCfourteen}{\rm C\kern-.1em\hbox{+\kern-.25em+}14\xspace} % C++14 symbolic name
    4343\newcommand{\CCseventeen}{\rm C\kern-.1em\hbox{+\kern-.25em+}17\xspace} % C++17 symbolic name
    44 \newcommand{\CCtwenty}{\rm C\kern-.1em\hbox{+\kern-.25em+}20} % C++20 symbolic name
    4544\newcommand{\Celeven}{C11\xspace}               % C11 symbolic name
    4645\newcommand{\Csharp}{C\raisebox{0.4ex}{\#}\xspace}      % C# symbolic name
     
    253252                _Bool,catch,catchResume,choose,_Complex,__complex,__complex__,__const,__const__,disable,dtype,enable,__extension__,
    254253                fallthrough,fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,one_t,otype,restrict,_Static_assert,
    255                 _Thread_local,throw,throwResume,trait,try,ttype,typeof,__typeof,__typeof__,zero_t},
     254                _Thread_local,throw,throwResume,trait,try,typeof,__typeof,__typeof__,zero_t},
    256255}%
    257256
  • doc/rob_thesis/ctordtor.tex

    r936a287 rfbcde64  
    135135%   at the global scope (which is likely the most common case)
    136136% * [9]
     137
     138% Move semantics
     139% * <ongoing discussion about this. this will be filled in
     140%    once we come to a consensus>
    137141
    138142% Changes to polymorphic type classes
  • doc/rob_thesis/tuples.tex

    r936a287 rfbcde64  
    615615\end{cfacode}
    616616Note that due to flattening, @x@ used in the argument position is converted into the list of its fields.
    617 In the call to @f@, the second and third argument components are structured into a tuple argument.
     617In the call to @f@, a the second and third argument components are structured into a tuple argument.
    618618
    619619Expressions which may contain side effects are made into \emph{unique expressions} before being expanded by the flattening conversion.
     
    643643\end{cfacode}
    644644Since argument evaluation order is not specified by the C programming language, this scheme is built to work regardless of evaluation order.
    645 The first time a unique expression is executed, the actual expression is evaluated and the accompanying boolean is set to true.
     645The first time a unique expression is executed, the actual expression is evaluated and the accompanying boolean is true to true.
    646646Every subsequent evaluation of the unique expression then results in an access to the stored result of the actual expression.
    647647
     
    12991299Thunks 0 through 3 provide wrappers for the @otype@ parameters for @const char *@, while @_thunk4@ translates a call to @print([int, const char *])@ into a call to @print_variadic(int, [const char *])@.
    13001300This all builds to a call to @print_variadic@, with the appropriate copy construction of the tuple argument.
    1301 
    1302 \section{Future Work}
  • src/InitTweak/FixInit.cc

    r936a287 rfbcde64  
    738738                                                stmtsToAddAfter.push_back( ifStmt );
    739739
    740                                                 Statement * dtor = ctorInit->get_dtor();
    741                                                 objDecl->set_init( NULL );
    742                                                 ctorInit->set_ctor( NULL );
    743                                                 ctorInit->set_dtor( nullptr );
    744                                                 if ( dtor ) {
     740                                                if ( ctorInit->get_dtor() ) {
    745741                                                        // if the object has a non-trivial destructor, have to
    746742                                                        // hoist it and the object into the global space and
    747743                                                        // call the destructor function with atexit.
    748744
    749                                                         Statement * dtorStmt = dtor->clone();
     745                                                        Statement * dtorStmt = ctorInit->get_dtor()->clone();
    750746
    751747                                                        // void __objName_dtor_atexitN(...) {...}
     
    776772                                                        objDecl->set_mangleName( SymTab::Mangler::mangle( objDecl ) );
    777773
     774                                                        objDecl->set_init( NULL );
     775                                                        ctorInit->set_ctor( NULL );
     776                                                        delete ctorInit;
     777
    778778                                                        // xxx - temporary hack: need to return a declaration, but want to hoist the current object out of this scope
    779779                                                        // create a new object which is never used
    780780                                                        static UniqueName dummyNamer( "_dummy" );
    781781                                                        ObjectDecl * dummy = new ObjectDecl( dummyNamer.newName(), Type::StorageClasses( Type::Static ), LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new VoidType( Type::Qualifiers() ) ), 0, std::list< Attribute * >{ new Attribute("unused") } );
    782                                                         delete ctorInit;
    783782                                                        return dummy;
    784783                                                }
  • src/InitTweak/GenInit.cc

    r936a287 rfbcde64  
    294294                handleDWT( objDecl );
    295295                // hands off if @=, extern, builtin, etc.
    296                 // even if unmanaged, try to construct global or static if initializer is not constexpr, since this is not legal C
    297                 if ( tryConstruct( objDecl ) && ( isManaged( objDecl ) || ((! inFunction || objDecl->get_storageClasses().is_static ) && ! isConstExpr( objDecl->get_init() ) ) ) ) {
     296                // if global but initializer is not constexpr, always try to construct, since this is not legal C
     297                if ( ( tryConstruct( objDecl ) && isManaged( objDecl ) ) || (! inFunction && ! isConstExpr( objDecl->get_init() ) ) ) {
    298298                        // constructed objects cannot be designated
    299                         if ( isDesignated( objDecl->get_init() ) ) throw SemanticError( "Cannot include designations in the initializer for a managed Object. If this is really what you want, then initialize with @=.\n", objDecl );
     299                        if ( isDesignated( objDecl->get_init() ) ) throw SemanticError( "Cannot include designations in the initializer for a managed Object. If this is really what you want, then initialize with @=.", objDecl );
    300300                        // constructed objects should not have initializers nested too deeply
    301301                        if ( ! checkInitDepth( objDecl ) ) throw SemanticError( "Managed object's initializer is too deep ", objDecl );
  • src/libcfa/iostream.c

    r936a287 rfbcde64  
    154154ostype * ?|?( ostype * os, const char * cp ) {
    155155        enum { Open = 1, Close, OpenClose };
    156         static const unsigned char mask[256] @= {
     156        static const unsigned char mask[256] = {
    157157                // opening delimiters, no space after
    158158                ['('] : Open, ['['] : Open, ['{'] : Open,
Note: See TracChangeset for help on using the changeset viewer.