Changeset fbcb354 for src/Common


Ignore:
Timestamp:
Aug 31, 2017, 3:33:11 PM (8 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
058f549
Parents:
326338ae (diff), 2ad507b8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:/u/cforall/software/cfa/cfa-cc

Location:
src/Common
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • src/Common/CodeLocation.h

    r326338ae rfbcb354  
    99// Author           : Andrew Beach
    1010// Created On       : Thr Aug 17 11:23:00 2017
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Thr Aug 17 14:07:00 2017
    13 // Update Count     : 0
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Aug 28 12:46:01 2017
     13// Update Count     : 2
    1414//
    1515
     
    6666
    6767inline std::string to_string( const CodeLocation& location ) {
    68     return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + " " : "";
     68    // Column number ":1" allows IDEs to parse the error message and position the cursor in the source text.
     69    return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + ":1 " : "";
    6970}
    7071
  • src/Common/PassVisitor.h

    r326338ae rfbcb354  
    7575        virtual void visit( CatchStmt *catchStmt ) override final;
    7676        virtual void visit( FinallyStmt *finallyStmt ) override final;
     77        virtual void visit( WaitForStmt *waitforStmt ) override final;
    7778        virtual void visit( NullStmt *nullStmt ) override final;
    7879        virtual void visit( DeclStmt *declStmt ) override final;
     
    159160        virtual Statement* mutate( ReturnStmt *returnStmt ) override final;
    160161        virtual Statement* mutate( ThrowStmt *throwStmt ) override final;
    161         virtual Statement* mutate( TryStmt *returnStmt ) override final;
     162        virtual Statement* mutate( TryStmt *tryStmt ) override final;
    162163        virtual Statement* mutate( CatchStmt *catchStmt ) override final;
    163         virtual Statement* mutate( FinallyStmt *catchStmt ) override final;
     164        virtual Statement* mutate( FinallyStmt *finallyStmt ) override final;
     165        virtual Statement* mutate( WaitForStmt *waitforStmt ) override final;
    164166        virtual NullStmt* mutate( NullStmt *nullStmt ) override final;
    165167        virtual Statement* mutate( DeclStmt *declStmt ) override final;
  • src/Common/PassVisitor.impl.h

    r326338ae rfbcb354  
    541541}
    542542
     543//--------------------------------------------------------------------------
     544// FinallyStmt
    543545template< typename pass_type >
    544546void PassVisitor< pass_type >::visit( FinallyStmt * node ) {
     
    547549
    548550template< typename pass_type >
     551Statement * PassVisitor< pass_type >::mutate( FinallyStmt * node ) {
     552        MUTATE_BODY( Statement, node );
     553}
     554
     555//--------------------------------------------------------------------------
     556// WaitForStmt
     557template< typename pass_type >
     558void PassVisitor< pass_type >::visit( WaitForStmt * node ) {
     559        VISIT_BODY( node );
     560}
     561
     562template< typename pass_type >
     563Statement * PassVisitor< pass_type >::mutate( WaitForStmt * node ) {
     564        MUTATE_BODY( Statement, node );
     565}
     566
     567//--------------------------------------------------------------------------
     568// NullStmt
     569template< typename pass_type >
    549570void PassVisitor< pass_type >::visit( NullStmt * node ) {
    550571        VISIT_BODY( node );
     
    552573
    553574template< typename pass_type >
     575NullStmt * PassVisitor< pass_type >::mutate( NullStmt * node ) {
     576        MUTATE_BODY( NullStmt, node );
     577}
     578
     579//--------------------------------------------------------------------------
     580// DeclStmt
     581template< typename pass_type >
    554582void PassVisitor< pass_type >::visit( DeclStmt * node ) {
    555583        VISIT_BODY( node );
     
    557585
    558586template< typename pass_type >
     587Statement * PassVisitor< pass_type >::mutate( DeclStmt * node ) {
     588        MUTATE_BODY( Statement, node );
     589}
     590
     591//--------------------------------------------------------------------------
     592// ImplicitCtorDtorStmt
     593template< typename pass_type >
    559594void PassVisitor< pass_type >::visit( ImplicitCtorDtorStmt * node ) {
    560595        VISIT_BODY( node );
     
    562597
    563598template< typename pass_type >
     599Statement * PassVisitor< pass_type >::mutate( ImplicitCtorDtorStmt * node ) {
     600        MUTATE_BODY( Statement, node );
     601}
     602
     603//--------------------------------------------------------------------------
     604// ApplicationExpr
     605template< typename pass_type >
    564606void PassVisitor< pass_type >::visit( ApplicationExpr * node ) {
    565607        VISIT_BODY( node );
     608}
     609
     610template< typename pass_type >
     611Expression * PassVisitor< pass_type >::mutate( ApplicationExpr * node ) {
     612        MUTATE_BODY( Expression, node );
    566613}
    567614
     
    944991
    945992template< typename pass_type >
    946 Statement * PassVisitor< pass_type >::mutate( FinallyStmt * node ) {
    947         MUTATE_BODY( Statement, node );
    948 }
    949 
    950 template< typename pass_type >
    951 NullStmt * PassVisitor< pass_type >::mutate( NullStmt * node ) {
    952         MUTATE_BODY( NullStmt, node );
    953 }
    954 
    955 template< typename pass_type >
    956 Statement * PassVisitor< pass_type >::mutate( DeclStmt * node ) {
    957         MUTATE_BODY( Statement, node );
    958 }
    959 
    960 template< typename pass_type >
    961 Statement * PassVisitor< pass_type >::mutate( ImplicitCtorDtorStmt * node ) {
    962         MUTATE_BODY( Statement, node );
    963 }
    964 
    965 template< typename pass_type >
    966 Expression * PassVisitor< pass_type >::mutate( ApplicationExpr * node ) {
    967         MUTATE_BODY( Expression, node );
    968 }
    969 
    970 template< typename pass_type >
    971993Expression * PassVisitor< pass_type >::mutate( NameExpr * node ) {
    972994        MUTATE_BODY( Expression, node );
  • src/Common/SemanticError.cc

    r326338ae rfbcb354  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:21:25 2015
    13 // Update Count     : 1
     12// Last Modified On : Tue Aug 29 18:17:35 2017
     13// Update Count     : 3
    1414//
    1515
    16 #include <cstdio>            // for fileno, stderr
    17 #include <unistd.h>          // for isatty
    18 #include <iostream>          // for basic_ostream, operator<<, ostream
    19 #include <list>              // for list, _List_iterator
    20 #include <string>            // for string, operator<<, operator+, to_string
     16#include <cstdio>                                                                               // for fileno, stderr
     17#include <unistd.h>                                                                             // for isatty
     18#include <iostream>                                                                             // for basic_ostream, operator<<, ostream
     19#include <list>                                                                                 // for list, _List_iterator
     20#include <string>                                                                               // for string, operator<<, operator+, to_string
    2121
    22 #include "Common/utility.h"  // for to_string, CodeLocation (ptr only)
     22#include "Common/utility.h"                                                             // for to_string, CodeLocation (ptr only)
    2323#include "SemanticError.h"
    24 
    25 inline const std::string& error_str() {
    26         static std::string str = isatty( fileno(stderr) ) ? "\e[31merror:\e[39m " : "error: ";
    27         return str;
    28 }
    2924
    3025SemanticError::SemanticError() {
     
    4944void SemanticError::print( std::ostream &os ) {
    5045        using std::to_string;
    51         for(auto err : errors) {
    52                 os << to_string( err.location ) << err.description << '\n';
     46        for( auto err : errors ) {
     47                os << to_string( err.location ) << err.description << std::endl;
    5348        }
    5449}
  • src/Common/SemanticError.h

    r326338ae rfbcb354  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Andrew Beach
    12 // Last Modified On : Thr Aug 17 14:01:00 2017
    13 // Update Count     : 7
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Aug 29 22:03:36 2017
     13// Update Count     : 17
    1414//
    1515
    1616#pragma once
    1717
    18 #include <exception>  // for exception
    19 #include <iostream>   // for ostream
    20 #include <list>       // for list
    21 #include <string>     // for string
     18#include <exception>                                                                    // for exception
     19#include <iostream>                                                                             // for ostream
     20#include <list>                                                                                 // for list
     21#include <string>                                                                               // for string
     22#include <unistd.h>                                                                             // for isatty
    2223
    23 #include "CodeLocation.h"  // for CodeLocation, toString
     24#include "CodeLocation.h"                                                               // for CodeLocation, toString
    2425
    2526struct error {
     
    2829
    2930        error() = default;
    30         error( const std::string& str ) : description( str ) {}
     31        error( const std::string & str ) : description( str ) {}
    3132
    32         void maybeSet( const CodeLocation& location ) {
     33        void maybeSet( const CodeLocation & location ) {
    3334                if( this->location.linenumber < 0 ) {
    3435                        this->location = location;
     
    4142        SemanticError();
    4243        SemanticError( std::string error );
    43         template< typename T > SemanticError( const std::string &error, const T *obj );
     44        template< typename T > SemanticError( const std::string & error, const T * obj );
    4445        ~SemanticError() throw() {}
    4546
    46         void append( SemanticError &other );
     47        static inline const std::string & error_str() {
     48                static std::string str = isatty( STDERR_FILENO ) ? "\e[31merror:\e[39m " : "error: ";
     49                return str;
     50        }
     51
     52        void append( SemanticError & other );
    4753        void append( const std::string & );
    4854        bool isEmpty() const;
    49         void print( std::ostream &os );
     55        void print( std::ostream & os );
    5056
    51         void set_location( const CodeLocation& location );
    52         // constructs an exception using the given message and the printed
    53         // representation of the obj (T must have a print method)
     57        void set_location( const CodeLocation & location );
     58        // constructs an exception using the given message and the printed representation of the obj (T must have a print
     59        // method)
    5460  private:
    5561        std::list< error > errors;
     
    5763
    5864template< typename T >
    59 SemanticError::SemanticError( const std::string &error, const T *obj ) {
     65SemanticError::SemanticError( const std::string & error, const T * obj ) {
    6066        append( toString( error, obj ) );
    6167}
Note: See TracChangeset for help on using the changeset viewer.