Skip to content

How to build with Mac Clang 12? #26

@rhzs

Description

@rhzs

Hi,

I tried to build this awesome project, but got disappointing error. Would you be able to help me?

cppfront 
❯ clang source/cppfront.cpp -std=c++20 -o cppfront
In file included from source/cppfront.cpp:18:
In file included from source/sema.h:21:
source/parse.h:150:5: error: use of class template 'String' requires template arguments; argument deduction not allowed in template parameter
    String   Name,
    ^~~~~~
source/common.h:211:8: note: template is declared here
struct String
       ^
In file included from source/cppfront.cpp:18:
In file included from source/sema.h:21:
source/parse.h:201:64: error: value of type 'const char [6]' is not implicitly convertible to 'int'
using is_as_expression_node          = binary_expression_node< "is-as"          , prefix_expression_node         >;
                                                               ^~~~~~~
source/parse.h:202:83: error: unknown type name 'is_as_expression_node'; did you mean 'id_expression_node'?
using multiplicative_expression_node = binary_expression_node< "multiplicative" , is_as_expression_node          >;
                                                                                  ^~~~~~~~~~~~~~~~~~~~~
                                                                                  id_expression_node
source/parse.h:110:8: note: 'id_expression_node' declared here
struct id_expression_node;
       ^
source/parse.h:202:64: error: value of type 'const char [15]' is not implicitly convertible to 'int'
using multiplicative_expression_node = binary_expression_node< "multiplicative" , is_as_expression_node          >;
                                                               ^~~~~~~~~~~~~~~~
source/parse.h:203:83: error: use of undeclared identifier 'multiplicative_expression_node'
using additive_expression_node       = binary_expression_node< "additive"       , multiplicative_expression_node >;
                                                                                  ^
source/parse.h:204:83: error: use of undeclared identifier 'additive_expression_node'
using shift_expression_node          = binary_expression_node< "shift"          , additive_expression_node       >;
                                                                                  ^
source/parse.h:205:83: error: unknown type name 'shift_expression_node'; did you mean 'id_expression_node'?
using compare_expression_node        = binary_expression_node< "compare"        , shift_expression_node          >;
                                                                                  ^~~~~~~~~~~~~~~~~~~~~
                                                                                  id_expression_node
source/parse.h:110:8: note: 'id_expression_node' declared here
struct id_expression_node;
       ^
source/parse.h:205:64: error: value of type 'const char [8]' is not implicitly convertible to 'int'
using compare_expression_node        = binary_expression_node< "compare"        , shift_expression_node          >;
                                                               ^~~~~~~~~
source/parse.h:206:83: error: use of undeclared identifier 'compare_expression_node'
using relational_expression_node     = binary_expression_node< "relational"     , compare_expression_node        >;
                                                                                  ^
source/parse.h:207:83: error: use of undeclared identifier 'relational_expression_node'
using equality_expression_node       = binary_expression_node< "equality"       , relational_expression_node     >;
                                                                                  ^
source/parse.h:208:83: error: use of undeclared identifier 'equality_expression_node'; did you mean 'binary_expression_node'?
using bit_and_expression_node        = binary_expression_node< "bit-and"        , equality_expression_node       >;
                                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~
                                                                                  binary_expression_node
source/parse.h:153:8: note: 'binary_expression_node' declared here
struct binary_expression_node
       ^
source/parse.h:208:83: error: use of undeclared identifier 'equality_expression_node'
using bit_and_expression_node        = binary_expression_node< "bit-and"        , equality_expression_node       >;
                                                                                  ^
source/parse.h:209:83: error: use of undeclared identifier 'bit_and_expression_node'; did you mean 'binary_expression_node'?
using bit_xor_expression_node        = binary_expression_node< "bit-xor"        , bit_and_expression_node        >;
                                                                                  ^~~~~~~~~~~~~~~~~~~~~~~
                                                                                  binary_expression_node
source/parse.h:153:8: note: 'binary_expression_node' declared here
struct binary_expression_node
       ^
source/parse.h:209:83: error: use of undeclared identifier 'bit_and_expression_node'
using bit_xor_expression_node        = binary_expression_node< "bit-xor"        , bit_and_expression_node        >;
                                                                                  ^
source/parse.h:210:83: error: use of undeclared identifier 'bit_xor_expression_node'; did you mean 'binary_expression_node'?
using bit_or_expression_node         = binary_expression_node< "bit-or"         , bit_xor_expression_node        >;
                                                                                  ^~~~~~~~~~~~~~~~~~~~~~~
                                                                                  binary_expression_node
source/parse.h:153:8: note: 'binary_expression_node' declared here
struct binary_expression_node
       ^
source/parse.h:210:83: error: use of undeclared identifier 'bit_xor_expression_node'
using bit_or_expression_node         = binary_expression_node< "bit-or"         , bit_xor_expression_node        >;
                                                                                  ^
source/parse.h:211:83: error: use of undeclared identifier 'bit_or_expression_node'; did you mean 'binary_expression_node'?
using logical_and_expression_node    = binary_expression_node< "logical-and"    , bit_or_expression_node         >;
                                                                                  ^~~~~~~~~~~~~~~~~~~~~~
                                                                                  binary_expression_node
source/parse.h:153:8: note: 'binary_expression_node' declared here
struct binary_expression_node
       ^
source/parse.h:211:83: error: use of undeclared identifier 'bit_or_expression_node'
using logical_and_expression_node    = binary_expression_node< "logical-and"    , bit_or_expression_node         >;
                                                                                  ^
source/parse.h:212:83: error: use of undeclared identifier 'logical_and_expression_node'
using logical_or_expression_node     = binary_expression_node< "logical-or"     , logical_and_expression_node    >;
                                                                                  ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

clang

❯ clang --version
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: x86_64-apple-darwin20.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions