Changes in / [35cd219:e58dfb9]


Ignore:
Location:
src
Files:
1 deleted
24 edited

Legend:

Unmodified
Added
Removed
  • src/Common/SemanticError.cc

    r35cd219 re58dfb9  
    2222#include "SemanticError.h"
    2323
    24 #include <unistd.h>
    25 
    26 inline const std::string& error_str() {
    27         static std::string str = isatty( fileno(stderr) ) ? "\e[31merror:\e[39m " : "error: ";
    28         return str;
    29 }
    30 
    3124SemanticError::SemanticError() {
    3225}
    3326
    3427SemanticError::SemanticError( std::string error ) {
    35         append( error );
     28  append( error );
    3629}
    3730
    3831void SemanticError::append( SemanticError &other ) {
    39         errors.splice( errors.end(), other.errors );
     32  errors.splice( errors.end(), other.errors );
    4033}
    4134
    4235void SemanticError::append( const std::string & msg ) {
    43         errors.emplace_back( error_str() + msg );
     36  errors.push_back( std::string( "Error: ") + msg );
    4437}
    4538
     
    4942
    5043void SemanticError::print( std::ostream &os ) {
    51         using std::to_string;
    52         for(auto err : errors) {
    53                 os << to_string( err.location ) << err.description << '\n';
    54         }
    55 }
    56 
    57 void SemanticError::set_location( const CodeLocation& location ) {
    58         errors.begin()->maybeSet( location );
     44        std::copy( errors.begin(), errors.end(), std::ostream_iterator< std::string >( os, "\n" ) );
    5945}
    6046
  • src/Common/SemanticError.h

    r35cd219 re58dfb9  
    2323#include <iostream>
    2424
    25 #include "utility.h"
    26 
    27 struct error {
    28         std::string description;
    29         CodeLocation location;
    30 
    31         error() = default;
    32         error( const std::string& str ) : description( str ) {}
    33 
    34         void maybeSet( const CodeLocation& location ) {
    35                 if( this->location.linenumber < 0 ) {
    36                         this->location = location;
    37                 }
    38         }
    39 };
    40 
    4125class SemanticError : public std::exception {
    4226  public:
     
    5135        void print( std::ostream &os );
    5236
    53         void set_location( const CodeLocation& location );
    5437        // constructs an exception using the given message and the printed
    5538        // representation of the obj (T must have a print method)
    5639  private:
    57         std::list< error > errors;
     40        std::list< std::string > errors;
    5841};
    5942
  • src/Common/utility.h

    r35cd219 re58dfb9  
    2525#include <sstream>
    2626#include <string>
    27 
    2827#include <cassert>
     28
    2929template< typename T >
    3030static inline T * maybeClone( const T *orig ) {
     
    303303        return group_iterate_t<Args...>(args...);
    304304}
    305 
    306 struct CodeLocation {
    307         int linenumber;
    308         std::string filename;
    309 
    310         CodeLocation()
    311                 : linenumber( -1 )
    312                 , filename("")
    313         {}
    314 
    315         CodeLocation( const char* filename, int lineno )
    316                 : linenumber( lineno )
    317                 , filename(filename ? filename : "")
    318         {}
    319 };
    320 
    321 inline std::string to_string( const CodeLocation& location ) {
    322         return location.linenumber >= 0 ? location.filename + ":" + std::to_string(location.linenumber) + " " : "";
    323 }
    324305#endif // _UTILITY_H
    325306
  • src/GenPoly/Box.cc

    r35cd219 re58dfb9  
    236236                                } // if
    237237                        } catch( SemanticError &e ) {
    238                                 e.set_location( (*i)->location );
    239238                                errors.append( e );
    240239                        } // try
  • src/InitTweak/FixInit.cc

    r35cd219 re58dfb9  
    313313                                        translationUnit.splice( i, fixer.staticDtorDecls );
    314314                                } catch( SemanticError &e ) {
    315                                         e.set_location( (*i)->location );
    316315                                        errors.append( e );
    317316                                } // try
  • src/Parser/DeclarationNode.cc

    r35cd219 re58dfb9  
    921921                                Declaration * decl = extr->build();
    922922                                if ( decl ) {
    923                                         decl->location = cur->location;
    924923                                        * out++ = decl;
    925924                                } // if
     
    929928                        Declaration * decl = cur->build();
    930929                        if ( decl ) {
    931                                 decl->location = cur->location;
    932930                                * out++ = decl;
    933931                        } // if
    934932                } catch( SemanticError &e ) {
    935                         e.set_location( cur->location );
    936933                        errors.append( e );
    937934                } // try
     
    953950                        if ( decl ) {
    954951                                if ( DeclarationWithType * dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
    955                                         dwt->location = cur->location;
    956952                                        * out++ = dwt;
    957953                                } else if ( StructDecl * agg = dynamic_cast< StructDecl * >( decl ) ) {
    958954                                        StructInstType * inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    959                                         auto obj = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
    960                                         obj->location = cur->location;
    961                                         * out++ = obj;
     955                                        * out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
    962956                                        delete agg;
    963957                                } else if ( UnionDecl * agg = dynamic_cast< UnionDecl * >( decl ) ) {
    964958                                        UnionInstType * inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    965                                         auto obj = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
    966                                         obj->location = cur->location;
    967                                         * out++ = obj;
     959                                        * out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
    968960                                } // if
    969961                        } // if
    970962                } catch( SemanticError &e ) {
    971                         e.set_location( cur->location );
    972963                        errors.append( e );
    973964                } // try
     
    988979                        * out++ = cur->buildType();
    989980                } catch( SemanticError &e ) {
    990                         e.set_location( cur->location );
    991981                        errors.append( e );
    992982                } // try
  • src/Parser/ParseNode.h

    r35cd219 re58dfb9  
    3939//##############################################################################
    4040
    41 extern char* yyfilename;
    42 extern int yylineno;
    43 
    4441class ParseNode {
    4542  public:
     
    6865        ParseNode * next = nullptr;
    6966        std::string * name = nullptr;
    70         CodeLocation location = { yyfilename, yylineno };
    7167}; // ParseNode
    7268
     
    414410        while ( cur ) {
    415411                try {
     412//                      SynTreeType * result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::result_of< decltype(&NodeType::build)(NodeType)>::type >( cur ) );
    416413                        SynTreeType * result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::pointer_traits< decltype(cur->build())>::element_type >( cur ) );
    417414                        if ( result ) {
    418                                 result->location = cur->location;
    419415                                * out++ = result;
    420416                        } // if
    421417                } catch( SemanticError &e ) {
    422                         e.set_location( cur->location );
    423418                        errors.append( e );
    424419                } // try
  • src/ResolvExpr/Resolver.cc

    r35cd219 re58dfb9  
    8686                Resolver resolver;
    8787                acceptAll( translationUnit, resolver );
     88#if 0
     89                resolver.print( cerr );
     90                for ( std::list< Declaration * >::iterator i = translationUnit.begin(); i != translationUnit.end(); ++i ) {
     91                        (*i)->print( std::cerr );
     92                        (*i)->accept( resolver );
     93                } // for
     94#endif
    8895        }
    8996
  • src/SynTree/Declaration.h

    r35cd219 re58dfb9  
    1717#define DECLARATION_H
    1818
    19 #include <string>
    20 
    21 #include "BaseSyntaxNode.h"
     19#include "SynTree.h"
     20#include "Visitor.h"
    2221#include "Mutator.h"
    23 #include "Visitor.h"
    24 #include "SynTree.h"
    2522#include "Parser/LinkageSpec.h"
    2623#include "Parser/ParseNode.h"
    27 
    28 class Declaration : public BaseSyntaxNode {
     24#include <string>
     25
     26class Declaration {
    2927  public:
    3028        Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage );
  • src/SynTree/Expression.h

    r35cd219 re58dfb9  
    1919#include <map>
    2020#include <memory>
    21 
    22 #include "BaseSyntaxNode.h"
    23 #include "Constant.h"
    24 #include "Mutator.h"
    2521#include "SynTree.h"
    2622#include "Visitor.h"
     23#include "Mutator.h"
     24#include "Constant.h"
    2725#include "Common/UniqueName.h"
    2826
    2927/// Expression is the root type for all expressions
    30 class Expression : public BaseSyntaxNode{
     28class Expression {
    3129  public:
    3230        Expression( Expression * _aname = nullptr );
  • src/SynTree/Initializer.h

    r35cd219 re58dfb9  
    1717#define INITIALIZER_H
    1818
     19#include "SynTree.h"
     20#include "Visitor.h"
     21#include "Mutator.h"
     22#include "Type.h"
     23
    1924#include <cassert>
    20 
    21 #include "BaseSyntaxNode.h"
    22 #include "Mutator.h"
    23 #include "SynTree.h"
    24 #include "Type.h"
    25 #include "Visitor.h"
    2625
    2726const std::list<Expression*> noDesignators;
    2827
    2928// Initializer: base class for object initializers (provide default values)
    30 class Initializer : public BaseSyntaxNode {
     29class Initializer {
    3130  public:
    3231        //      Initializer( std::string _name = std::string(""), int _pos = 0 );
  • src/SynTree/Mutator.h

    r35cd219 re58dfb9  
    139139                        } // if
    140140                } catch( SemanticError &e ) {
    141                         e.set_location( (*i)->location );
    142141                        errors.append( e );
    143142                } // try
  • src/SynTree/Statement.h

    r35cd219 re58dfb9  
    1717#define STATEMENT_H
    1818
    19 #include "BaseSyntaxNode.h"
     19#include "SynTree.h"
     20#include "Visitor.h"
     21#include "Mutator.h"
     22#include "Common/SemanticError.h"
     23#include "Type.h"
    2024#include "Label.h"
    21 #include "Mutator.h"
    22 #include "SynTree.h"
    23 #include "Type.h"
    24 #include "Visitor.h"
    25 #include "Common/SemanticError.h"
    26 
    27 class Statement : public BaseSyntaxNode {
     25
     26class Statement {
    2827  public:
    2928        Statement( std::list<Label> labels );
  • src/SynTree/Type.h

    r35cd219 re58dfb9  
    1717#define TYPE_H
    1818
    19 #include "BaseSyntaxNode.h"
    20 #include "Mutator.h"
    2119#include "SynTree.h"
    2220#include "Visitor.h"
     21#include "Mutator.h"
    2322#include "Common/utility.h"
    2423
    25 class Type : public BaseSyntaxNode {
     24class Type {
    2625  public:
    2726        struct Qualifiers {
  • src/SynTree/Visitor.h

    r35cd219 re58dfb9  
    133133                        }
    134134                } catch( SemanticError &e ) {
    135                         e.set_location( (*i)->location );
    136135                        errors.append( e );
    137136                }
     
    160159                        } // if
    161160                } catch( SemanticError &e ) {
    162                         e.set_location( (*i)->location );                       
    163161                        errors.append( e );
    164162                } // try
  • src/tests/.expect/castError.txt

    r35cd219 re58dfb9  
    1 castError.c:7 error: Can't choose between 3 alternatives for expression Cast of:
     1Error: Can't choose between 3 alternatives for expression Cast of:
    22  Name: f
    33
  • src/tests/.expect/completeTypeError.txt

    r35cd219 re58dfb9  
    1 completeTypeError.c:34 error: No reasonable alternatives for expression Applying untyped:
     1Error: No reasonable alternatives for expression Applying untyped:
    22  Name: *?
    33...to:
     
    55
    66
    7 completeTypeError.c:36 error: No reasonable alternatives for expression Applying untyped:
     7Error: No reasonable alternatives for expression Applying untyped:
    88  Name: baz
    99...to:
     
    1111
    1212
    13 completeTypeError.c:37 error: No reasonable alternatives for expression Applying untyped:
     13Error: No reasonable alternatives for expression Applying untyped:
    1414  Name: quux
    1515...to:
     
    1717
    1818
    19 completeTypeError.c:58 error: No reasonable alternatives for expression Applying untyped:
     19Error: No reasonable alternatives for expression Applying untyped:
    2020  Name: baz
    2121...to:
     
    2323
    2424
    25 completeTypeError.c:59 error: No reasonable alternatives for expression Applying untyped:
     25Error: No reasonable alternatives for expression Applying untyped:
    2626  Name: quux
    2727...to:
     
    2929
    3030
    31 completeTypeError.c:60 error: No reasonable alternatives for expression Applying untyped:
     31Error: No reasonable alternatives for expression Applying untyped:
    3232  Name: *?
    3333...to:
     
    3535
    3636
    37 completeTypeError.c:72 error: No reasonable alternatives for expression Applying untyped:
     37Error: No reasonable alternatives for expression Applying untyped:
    3838  Name: baz
    3939...to:
  • src/tests/.expect/constant0-1DP.txt

    r35cd219 re58dfb9  
    1 constant0-1.c:14 error: duplicate object definition for 0: signed int
    2 constant0-1.c:15 error: duplicate object definition for 0: const signed int
    3 constant0-1.c:16 error: duplicate object definition for 1: signed int
    4 constant0-1.c:17 error: duplicate object definition for 1: const signed int
    5 constant0-1.c:18 error: duplicate object definition for 0: signed int
    6 constant0-1.c:18 error: duplicate object definition for 1: signed int
    7 constant0-1.c:19 error: duplicate object definition for 0: signed int
    8 constant0-1.c:19 error: duplicate object definition for 1: signed int
    9 constant0-1.c:20 error: duplicate object definition for 0: const signed int
    10 constant0-1.c:20 error: duplicate object definition for 1: const signed int
    11 constant0-1.c:21 error: duplicate object definition for 0: const signed int
    12 constant0-1.c:21 error: duplicate object definition for 1: const signed int
    13 constant0-1.c:39 error: duplicate object definition for 0: pointer to signed int
    14 constant0-1.c:39 error: duplicate object definition for 1: pointer to signed int
    15 constant0-1.c:40 error: duplicate object definition for 0: pointer to signed int
    16 constant0-1.c:40 error: duplicate object definition for 1: pointer to signed int
    17 constant0-1.c:41 error: duplicate object definition for 0: pointer to signed int
    18 constant0-1.c:41 error: duplicate object definition for 1: pointer to signed int
    19 constant0-1.c:42 error: duplicate object definition for 0: pointer to signed int
    20 constant0-1.c:42 error: duplicate object definition for 1: pointer to signed int
    21 constant0-1.c:43 error: duplicate object definition for 0: const pointer to signed int
    22 constant0-1.c:43 error: duplicate object definition for 1: const pointer to signed int
    23 constant0-1.c:44 error: duplicate object definition for 0: const pointer to signed int
    24 constant0-1.c:44 error: duplicate object definition for 1: const pointer to signed int
    25 constant0-1.c:45 error: duplicate object definition for 0: const pointer to signed int
    26 constant0-1.c:45 error: duplicate object definition for 1: const pointer to signed int
    27 constant0-1.c:46 error: duplicate object definition for x: const pointer to pointer to signed int
    28 constant0-1.c:46 error: duplicate object definition for 0: pointer to pointer to signed int
    29 constant0-1.c:47 error: duplicate object definition for x: const pointer to pointer to signed int
    30 constant0-1.c:47 error: duplicate object definition for 0: pointer to pointer to signed int
    31 constant0-1.c:50 error: duplicate object definition for x: const pointer to pointer to signed int
    32 constant0-1.c:50 error: duplicate object definition for 0: pointer to pointer to signed int
     1Error: duplicate object definition for 0: signed int
     2Error: duplicate object definition for 0: const signed int
     3Error: duplicate object definition for 1: signed int
     4Error: duplicate object definition for 1: const signed int
     5Error: duplicate object definition for 0: signed int
     6Error: duplicate object definition for 1: signed int
     7Error: duplicate object definition for 0: signed int
     8Error: duplicate object definition for 1: signed int
     9Error: duplicate object definition for 0: const signed int
     10Error: duplicate object definition for 1: const signed int
     11Error: duplicate object definition for 0: const signed int
     12Error: duplicate object definition for 1: const signed int
     13Error: duplicate object definition for 0: pointer to signed int
     14Error: duplicate object definition for 1: pointer to signed int
     15Error: duplicate object definition for 0: pointer to signed int
     16Error: duplicate object definition for 1: pointer to signed int
     17Error: duplicate object definition for 0: pointer to signed int
     18Error: duplicate object definition for 1: pointer to signed int
     19Error: duplicate object definition for 0: pointer to signed int
     20Error: duplicate object definition for 1: pointer to signed int
     21Error: duplicate object definition for 0: const pointer to signed int
     22Error: duplicate object definition for 1: const pointer to signed int
     23Error: duplicate object definition for 0: const pointer to signed int
     24Error: duplicate object definition for 1: const pointer to signed int
     25Error: duplicate object definition for 0: const pointer to signed int
     26Error: duplicate object definition for 1: const pointer to signed int
     27Error: duplicate object definition for x: const pointer to pointer to signed int
     28Error: duplicate object definition for 0: pointer to pointer to signed int
     29Error: duplicate object definition for x: const pointer to pointer to signed int
     30Error: duplicate object definition for 0: pointer to pointer to signed int
     31Error: duplicate object definition for x: const pointer to pointer to signed int
     32Error: duplicate object definition for 0: pointer to pointer to signed int
    3333make: *** [constant0-1DP] Error 1
  • src/tests/.expect/constant0-1NDDP.txt

    r35cd219 re58dfb9  
    1 constant0-1.c:14 error: duplicate object definition for 0: signed int
    2 constant0-1.c:15 error: duplicate object definition for 0: const signed int
    3 constant0-1.c:16 error: duplicate object definition for 1: signed int
    4 constant0-1.c:17 error: duplicate object definition for 1: const signed int
    5 constant0-1.c:18 error: duplicate object definition for 0: signed int
    6 constant0-1.c:18 error: duplicate object definition for 1: signed int
    7 constant0-1.c:19 error: duplicate object definition for 0: signed int
    8 constant0-1.c:19 error: duplicate object definition for 1: signed int
    9 constant0-1.c:20 error: duplicate object definition for 0: const signed int
    10 constant0-1.c:20 error: duplicate object definition for 1: const signed int
    11 constant0-1.c:21 error: duplicate object definition for 0: const signed int
    12 constant0-1.c:21 error: duplicate object definition for 1: const signed int
    13 constant0-1.c:66 error: duplicate object definition for x: pointer to signed int
    14 constant0-1.c:66 error: duplicate object definition for 0: pointer to signed int
    15 constant0-1.c:67 error: duplicate object definition for x: const pointer to signed int
    16 constant0-1.c:67 error: duplicate object definition for 0: const pointer to signed int
     1Error: duplicate object definition for 0: signed int
     2Error: duplicate object definition for 0: const signed int
     3Error: duplicate object definition for 1: signed int
     4Error: duplicate object definition for 1: const signed int
     5Error: duplicate object definition for 0: signed int
     6Error: duplicate object definition for 1: signed int
     7Error: duplicate object definition for 0: signed int
     8Error: duplicate object definition for 1: signed int
     9Error: duplicate object definition for 0: const signed int
     10Error: duplicate object definition for 1: const signed int
     11Error: duplicate object definition for 0: const signed int
     12Error: duplicate object definition for 1: const signed int
     13Error: duplicate object definition for x: pointer to signed int
     14Error: duplicate object definition for 0: pointer to signed int
     15Error: duplicate object definition for x: const pointer to signed int
     16Error: duplicate object definition for 0: const pointer to signed int
    1717make: *** [constant0-1NDDP] Error 1
  • src/tests/.expect/declarationErrors.txt

    r35cd219 re58dfb9  
    1 declarationErrors.c:16 error: duplicate static in declaration of x1: static const volatile short int
     1Error: duplicate static in declaration of x1: static const volatile short int
    22
    3 declarationErrors.c:17 error: conflicting extern & static in declaration of x2: extern const volatile short int
     3Error: conflicting extern & static in declaration of x2: extern const volatile short int
    44
    5 declarationErrors.c:18 error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int
     5Error: conflicting extern & auto, conflicting extern & static, conflicting extern & static, duplicate extern in declaration of x3: extern const volatile short int
    66
    7 declarationErrors.c:19 error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0
     7Error: duplicate static in declaration of x4: static const volatile instance of const volatile struct __anonymous0
    88  with members
    99   with body
    1010
    1111
    12 declarationErrors.c:20 error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1
     12Error: duplicate const, duplicate static, duplicate volatile in declaration of x5: static const volatile instance of const volatile struct __anonymous1
    1313  with members
    1414   with body
    1515
    1616
    17 declarationErrors.c:22 error: duplicate static in declaration of x6: static const volatile instance of type Int
     17Error: duplicate static in declaration of x6: static const volatile instance of type Int
    1818
    19 declarationErrors.c:24 error: duplicate const in declaration of f01: static inline function
     19Error: duplicate const in declaration of f01: static inline function
    2020  with no parameters
    2121  returning const volatile int
    2222
    2323
    24 declarationErrors.c:25 error: duplicate volatile in declaration of f02: static inline function
     24Error: duplicate volatile in declaration of f02: static inline function
    2525  with no parameters
    2626  returning const volatile int
    2727
    2828
    29 declarationErrors.c:26 error: duplicate const in declaration of f03: static inline function
     29Error: duplicate const in declaration of f03: static inline function
    3030  with no parameters
    3131  returning const volatile int
    3232
    3333
    34 declarationErrors.c:27 error: duplicate volatile in declaration of f04: static inline function
     34Error: duplicate volatile in declaration of f04: static inline function
    3535  with no parameters
    3636  returning const volatile int
    3737
    3838
    39 declarationErrors.c:28 error: duplicate const in declaration of f05: static inline function
     39Error: duplicate const in declaration of f05: static inline function
    4040  with no parameters
    4141  returning const volatile int
    4242
    4343
    44 declarationErrors.c:29 error: duplicate volatile in declaration of f06: static inline function
     44Error: duplicate volatile in declaration of f06: static inline function
    4545  with no parameters
    4646  returning const volatile int
    4747
    4848
    49 declarationErrors.c:30 error: duplicate const in declaration of f07: static inline function
     49Error: duplicate const in declaration of f07: static inline function
    5050  with no parameters
    5151  returning const volatile int
    5252
    5353
    54 declarationErrors.c:31 error: duplicate const, duplicate volatile in declaration of f08: static inline function
     54Error: duplicate const, duplicate volatile in declaration of f08: static inline function
    5555  with no parameters
    5656  returning const volatile int
    5757
    5858
    59 declarationErrors.c:33 error: duplicate const, duplicate volatile in declaration of f09: static inline function
     59Error: duplicate const, duplicate volatile in declaration of f09: static inline function
    6060  with no parameters
    6161  returning const volatile int
    6262
    6363
    64 declarationErrors.c:34 error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function
     64Error: duplicate const, duplicate _Atomic, duplicate _Atomic, duplicate const, duplicate restrict, duplicate volatile in declaration of f09: static inline function
    6565  with no parameters
    6666  returning const restrict volatile _Atomic int
  • src/tests/.expect/dtor-early-exit-ERR1.txt

    r35cd219 re58dfb9  
    1 dtor-early-exit.c:142 error: jump to label 'L1' crosses initialization of y Branch (Goto)
     1Error: jump to label 'L1' crosses initialization of y Branch (Goto)
    22
    33make: *** [dtor-early-exit-ERR1] Error 1
  • src/tests/.expect/dtor-early-exit-ERR2.txt

    r35cd219 re58dfb9  
    1 dtor-early-exit.c:142 error: jump to label 'L2' crosses initialization of y Branch (Goto)
     1Error: jump to label 'L2' crosses initialization of y Branch (Goto)
    22
    33make: *** [dtor-early-exit-ERR2] Error 1
  • src/tests/.expect/memberCtors-ERR1.txt

    r35cd219 re58dfb9  
    1 error: in void ?{}(struct B *b), field a2 used before being constructed
     1Error: in void ?{}(struct B *b), field a2 used before being constructed
    22make: *** [memberCtors-ERR1] Error 1
  • src/tests/.expect/scopeErrors.txt

    r35cd219 re58dfb9  
    1 scopeErrors.c:2 error: duplicate object definition for thisIsAnError: signed int
    2 scopeErrors.c:20 error: duplicate function definition for butThisIsAnError: function
     1Error: duplicate object definition for thisIsAnError: signed int
     2Error: duplicate function definition for butThisIsAnError: function
    33  with parameters
    44    double
Note: See TracChangeset for help on using the changeset viewer.