diff options
author | John Hodge (bugs) <tpg@mutabah.net> | 2017-02-25 22:24:40 +0800 |
---|---|---|
committer | John Hodge (bugs) <tpg@mutabah.net> | 2017-02-25 22:24:40 +0800 |
commit | 03addc877bab648ccde022edec29f5b051ce7cb9 (patch) | |
tree | 51089cf2abbda1d48a7105da1cb18ec84f2f4590 | |
parent | 12c012c69235fd90c855881f2c07c91dbb052635 (diff) | |
download | mrust-03addc877bab648ccde022edec29f5b051ce7cb9.tar.gz |
Add visual studio project files, little tweaks to codebase to allow compiling on visual studio (not complete)
-rw-r--r-- | .gitignore | 19 | ||||
-rw-r--r-- | src/ast/path.cpp | 20 | ||||
-rw-r--r-- | src/ast/types.cpp | 2 | ||||
-rw-r--r-- | src/common.hpp | 6 | ||||
-rw-r--r-- | src/expand/format_args.cpp | 3 | ||||
-rw-r--r-- | src/hir/from_ast.cpp | 3 | ||||
-rw-r--r-- | src/hir/hir.hpp | 6 | ||||
-rw-r--r-- | src/hir/path.hpp | 2 | ||||
-rw-r--r-- | src/hir/pattern.hpp | 4 | ||||
-rw-r--r-- | src/hir/type.cpp | 8 | ||||
-rw-r--r-- | src/hir_typeck/common.hpp | 2 | ||||
-rw-r--r-- | src/include/cpp_unpack.h | 2 | ||||
-rw-r--r-- | src/include/debug.hpp | 9 | ||||
-rw-r--r-- | src/include/serialise.hpp | 2 | ||||
-rw-r--r-- | src/include/tagged_union.hpp | 135 | ||||
-rw-r--r-- | src/main.cpp | 56 | ||||
-rw-r--r-- | src/parse/interpolated_fragment.hpp | 2 | ||||
-rw-r--r-- | src/parse/token.hpp | 3 | ||||
-rw-r--r-- | vsproject/mrustc.sln | 38 | ||||
-rw-r--r-- | vsproject/mrustc.vcxproj | 264 | ||||
-rw-r--r-- | vsproject/mrustc.vcxproj.filters | 402 | ||||
-rw-r--r-- | vsproject/tu_test/main.cpp | 46 | ||||
-rw-r--r-- | vsproject/tu_test/tu_test.vcxproj | 133 | ||||
-rw-r--r-- | vsproject/tu_test/tu_test.vcxproj.filters | 22 |
24 files changed, 1047 insertions, 142 deletions
@@ -1,3 +1,10 @@ + +.* +*.gch +*.gch.dep +*.sw[po] +*~ + /obj /bin /mrustc.depend @@ -7,12 +14,14 @@ /crates.io /test_deps_run-pass.mk -/.obj -*.gch -*.gch.dep -*.sw[po] -*~ /output +/vsproject/Win32 +/vsproject/x64 +/vsproject/tu_test/Win32 +/vsproject/tu_test/x64 +/vsproject/*.sdf +/vsproject/*.depend +/vsproject/*.opendb /gitstats diff --git a/src/ast/path.cpp b/src/ast/path.cpp index da86b066..ebec5d5a 100644 --- a/src/ast/path.cpp +++ b/src/ast/path.cpp @@ -190,18 +190,18 @@ void Path::bind_variable(unsigned int slot) } void Path::bind_enum_var(const Enum& ent, const ::std::string& name, const ::std::vector<TypeRef>& /*args*/) { - unsigned int idx = 0; - for( idx = 0; idx < ent.variants().size(); idx ++ ) - { - if( ent.variants()[idx].m_name == name ) { - break; - } - } - if( idx == ent.variants().size() ) - throw ParseError::Generic("Enum variant not found"); + auto it = ::std::find_if(ent.variants().begin(), ent.variants().end(), [&](const auto& x) { return x.m_name == name; }); + if( it == ent.variants().end() ) + { + throw ParseError::Generic("Enum variant not found"); + } + unsigned int idx = it - ent.variants().begin(); DEBUG("Bound to enum variant '" << name << "' (#" << idx << ")"); - m_binding = PathBinding::make_EnumVar({ &ent, idx }); + ::AST::PathBinding::Data_EnumVar tmp; + tmp.enum_ = &ent; + tmp.idx = idx; + m_binding = PathBinding::make_EnumVar(tmp); } Path& Path::operator+=(const Path& other) diff --git a/src/ast/types.cpp b/src/ast/types.cpp index ccd169d7..d49feccd 100644 --- a/src/ast/types.cpp +++ b/src/ast/types.cpp @@ -118,7 +118,7 @@ TypeRef TypeRef::clone() const { case TypeData::TAGDEAD: assert(!"Copying a destructed type"); #define _COPY(VAR) case TypeData::TAG_##VAR: return TypeRef(m_span, TypeData::make_##VAR(m_data.as_##VAR()) ); break; - #define _CLONE(VAR, code...) case TypeData::TAG_##VAR: { auto& old = m_data.as_##VAR(); return TypeRef(m_span, TypeData::make_##VAR(code) ); } break; + #define _CLONE(VAR, ...) case TypeData::TAG_##VAR: { auto& old = m_data.as_##VAR(); return TypeRef(m_span, TypeData::make_##VAR(__VA_ARGS__) ); } break; _COPY(None) _COPY(Any) _COPY(Bang) diff --git a/src/common.hpp b/src/common.hpp index 0b0fad14..a0130371 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -14,8 +14,8 @@ #define FMT(ss) (dynamic_cast< ::std::stringstream&>(::std::stringstream() << ss).str()) // XXX: Evil hack - Define 'mv$' to be ::std::move #define mv$(x) ::std::move(x) -#define box$(x...) ::make_unique_ptr(::std::move(x)) -#define rc_new$(x...) ::make_shared_ptr(::std::move(x)) +#define box$(...) ::make_unique_ptr(::std::move(__VA_ARGS__)) +#define rc_new$(...) ::make_shared_ptr(::std::move(__VA_ARGS__)) #include "include/debug.hpp" #include "include/rustic.hpp" // slice and option @@ -77,6 +77,7 @@ static inline Ordering ord(unsigned l, unsigned r) else return OrdLess; } +#if UINTPTR_MAX != UINT_MAX static inline Ordering ord(::std::uintptr_t l, ::std::uintptr_t r) { if(l == r) @@ -86,6 +87,7 @@ static inline Ordering ord(::std::uintptr_t l, ::std::uintptr_t r) else return OrdLess; } +#endif static inline Ordering ord(const ::std::string& l, const ::std::string& r) { if(l == r) diff --git a/src/expand/format_args.cpp b/src/expand/format_args.cpp index 60c92952..deda6968 100644 --- a/src/expand/format_args.cpp +++ b/src/expand/format_args.cpp @@ -14,6 +14,7 @@ #include "../parse/interpolated_fragment.hpp" #include <ast/crate.hpp> // for m_load_std #include <ast/expr.hpp> // for ExprNode_* +#include <cctype> namespace { @@ -527,7 +528,7 @@ class CFormatArgsExpander: toks.push_back( Token(TOK_LIFETIME, "static") ); toks.push_back( Token(TOK_IDENT, "str") ); toks.push_back( Token(TOK_SEMICOLON) ); - toks.push_back( Token(fragments.size() + 1, CORETYPE_UINT) ); + toks.push_back( Token(static_cast<uint64_t>(fragments.size() + 1), CORETYPE_UINT) ); toks.push_back( TokenTree(TOK_SQUARE_CLOSE) ); toks.push_back( Token(TOK_EQUAL) ); diff --git a/src/hir/from_ast.cpp b/src/hir/from_ast.cpp index 1f1bc4e3..255546e7 100644 --- a/src/hir/from_ast.cpp +++ b/src/hir/from_ast.cpp @@ -702,7 +702,8 @@ { if( ptr->m_datatype == CORETYPE_UINT || ptr->m_datatype == CORETYPE_ANY ) { - unsigned int size_val = ptr->m_value; + // TODO: Limit check. + auto size_val = static_cast<unsigned int>( ptr->m_value ); return ::HIR::TypeRef::new_array( mv$(inner), size_val ); } } diff --git a/src/hir/hir.hpp b/src/hir/hir.hpp index b87385a0..2f6b37df 100644 --- a/src/hir/hir.hpp +++ b/src/hir/hir.hpp @@ -97,8 +97,9 @@ public: Literal m_value_res; }; -struct Constant +class Constant { +public: // NOTE: The generics can't influence the value of this `const` GenericParams m_params; @@ -269,8 +270,9 @@ TAGGED_UNION(TraitValueItem, Constant, (Static, Static), (Function, Function) ); -struct Trait +class Trait { +public: GenericParams m_params; ::std::string m_lifetime; ::std::vector< ::HIR::TraitPath > m_parent_traits; diff --git a/src/hir/path.hpp b/src/hir/path.hpp index eb9aca27..12e32dd1 100644 --- a/src/hir/path.hpp +++ b/src/hir/path.hpp @@ -16,7 +16,7 @@ namespace HIR { -struct Trait; +class Trait; enum Compare { Equal, diff --git a/src/hir/pattern.hpp b/src/hir/pattern.hpp index 51e20c5c..4c38b150 100644 --- a/src/hir/pattern.hpp +++ b/src/hir/pattern.hpp @@ -52,11 +52,11 @@ struct Pattern { TAGGED_UNION(Value, String, (Integer, struct { - enum ::HIR::CoreType type; // Str == _ + ::HIR::CoreType type; // Str == _ uint64_t value; // Signed numbers are encoded as 2's complement }), (Float, struct { - enum ::HIR::CoreType type; // Str == _ + ::HIR::CoreType type; // Str == _ double value; }), (String, ::std::string), diff --git a/src/hir/type.cpp b/src/hir/type.cpp index 9b0bf766..07e9f477 100644 --- a/src/hir/type.cpp +++ b/src/hir/type.cpp @@ -173,12 +173,12 @@ void ::HIR::TypeRef::fmt(::std::ostream& os) const ), (Closure, os << "closure["<<e.node<<"]"; - #if 0 + /* os << "("; for(const auto& t : e.m_arg_types) os << t << ", "; os << ") -> " << *e.m_rettype; - #endif + */ ) ) } @@ -370,7 +370,7 @@ Ordering HIR::TypeRef::ord(const ::HIR::TypeRef& x) const return ::ord(*te.m_rettype, *xe.m_rettype); ), (Closure, - ORD( (::std::uintptr_t)te.node, xe.node); + ORD( reinterpret_cast<::std::uintptr_t>(te.node), reinterpret_cast<::std::uintptr_t>(xe.node) ); //assert( te.m_rettype == xe.m_rettype ); return OrdEqual; ) @@ -813,7 +813,7 @@ bool ::HIR::TypeRef::match_test_generics(const Span& sp, const ::HIR::TypeRef& x // TODO: Need to invoke const eval here? Or support cloning expressions? Or run consteval earlier. if( const auto* ptr = dynamic_cast<const ::HIR::ExprNode_Literal*>(&**e.size) ) { - size_val = ptr->m_data.as_Integer().m_value; + size_val = static_cast<unsigned int>( ptr->m_data.as_Integer().m_value ); } else { diff --git a/src/hir_typeck/common.hpp b/src/hir_typeck/common.hpp index 54d9b038..09a5d9b2 100644 --- a/src/hir_typeck/common.hpp +++ b/src/hir_typeck/common.hpp @@ -88,7 +88,7 @@ extern ::std::ostream& operator<<(::std::ostream& os, const MonomorphState& ms); static inline t_cb_generic monomorphise_type_get_cb(const Span& sp, const ::HIR::TypeRef* self_ty, const ::HIR::PathParams* params_i, const ::HIR::PathParams* params_m, const ::HIR::PathParams* params_p=nullptr) { - return [=](const auto& gt)->const auto& { + return [=](const ::HIR::TypeRef& gt)->const ::HIR::TypeRef& { const auto& ge = gt.m_data.as_Generic(); if( ge.binding == 0xFFFF ) { ASSERT_BUG(sp, self_ty, "Self wasn't expected here"); diff --git a/src/include/cpp_unpack.h b/src/include/cpp_unpack.h index d5087668..69417589 100644 --- a/src/include/cpp_unpack.h +++ b/src/include/cpp_unpack.h @@ -25,7 +25,7 @@ // Macro to obtain a numbered macro for argument counts // - Raw variant #define CC_GM_I(SUF,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,COUNT,...) SUF##COUNT -#define CC_GM(SUF,...) CC_GM_I(SUF,__VA_ARGS__,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1) +#define CC_GM(SUF,...) CC_EXP( CC_GM_I(SUF,__VA_ARGS__,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1) ) #define CC_ITERATE(fcn, args, ...) CC_EXP( CC_GM(CC_CALL_A, __VA_ARGS__)(fcn, args, __VA_ARGS__) ) diff --git a/src/include/debug.hpp b/src/include/debug.hpp index ce2f89da..756d6ef2 100644 --- a/src/include/debug.hpp +++ b/src/include/debug.hpp @@ -38,11 +38,14 @@ struct RepeatLitStr } }; -class NullSink: - public ::std::ostream +class NullSink { public: - NullSink() {} + NullSink() + {} + + template<typename T> + const NullSink& operator<<(const T&) const { return *this; } }; class TraceLog diff --git a/src/include/serialise.hpp b/src/include/serialise.hpp index 6a9abf95..8b1cea98 100644 --- a/src/include/serialise.hpp +++ b/src/include/serialise.hpp @@ -141,7 +141,7 @@ protected: public: virtual void item(bool& b) = 0; virtual void item(uint64_t& v) = 0; - void item(unsigned int& v) { uint64_t v1; this->item(v1); v = v1; } + void item(unsigned int& v) { uint64_t v1; this->item(v1); v = static_cast<unsigned int>(v1); } virtual void item(int64_t& val) = 0; virtual void item(double& v) = 0; virtual void item(::std::string& s) = 0; diff --git a/src/include/tagged_union.hpp b/src/include/tagged_union.hpp index 9bd060d6..fbd42a77 100644 --- a/src/include/tagged_union.hpp +++ b/src/include/tagged_union.hpp @@ -10,59 +10,59 @@ //#include "cpp_unpack.h" #include <cassert> +#include <string> + +#define TU_FIRST(a, ...) a +#define TU_EXP1(x) x +#define TU_EXP(...) __VA_ARGS__ #define TU_CASE_ITEM(src, mod, var, name) mod auto& name = src.as_##var(); (void)&name; #define TU_CASE_BODY(class,var, ...) case class::var: { __VA_ARGS__ } break; #define TU_CASE(mod, class, var, name,src, ...) TU_CASE_BODY(mod,class,var, TU_CASE_ITEM(src,mod,var,name) __VA_ARGS__) #define TU_CASE2(mod, class, var, n1,s1, n2,s2, ...) TU_CASE_BODY(mod,class,var, TU_CASE_ITEM(s1,mod,var,n1) TU_CASE_ITEM(s2,mod,var,n2) __VA_ARGS__) -#define TU_FIRST(a, ...) a // Argument iteration -#define _DISP0(n) -#define _DISP1(n, _1) n _1 -#define _DISP2(n, _1, _2) n _1 n _2 -#define _DISP3(n, v, v2, v3) n v n v2 n v3 -#define _DISP4(n, v, v2, v3, v4) n v n v2 n v3 n v4 -#define _DISP5(n, v, ...) n v _DISP4(n, __VA_ARGS__) -#define _DISP6(n, v, ...) n v _DISP5(n, __VA_ARGS__) -#define _DISP7(n, v, ...) n v _DISP6(n, __VA_ARGS__) -#define _DISP8(n, v, ...) n v _DISP7(n, __VA_ARGS__) -#define _DISP9(n, a1,a2,a3,a4, b1,b2,b3,b4, c1) _DISP4(n, a1,a2,a3,a4) _DISP3(n, b1,b2,b3) _DISP2(n, b4,c1) -#define _DISP10(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2) _DISP4(n, a1,a2,a3,a4) _DISP4(n, b1,b2,b3,b4) _DISP2(n, c1,c2) -#define _DISP11(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3) _DISP4(n, a1,a2,a3,a4) _DISP4(n, b1,b2,b3,b4) _DISP3(n, c1,c2,c3) -#define _DISP12(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3,c4) _DISP4(n, a1,a2,a3,a4) _DISP4(n, b1,b2,b3,b4) _DISP4(n, c1,c2,c3,c4) -#define _DISP13(n, a1,a2,a3,a4,a5, b1,b2,b3,b4, c1,c2,c3,c4) _DISP5(n, a1,a2,a3,a4,a5) _DISP4(n, b1,b2,b3,b4) _DISP4(n, c1,c2,c3,c4) -#define _DISP14(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4) _DISP5(n, a1,a2,a3,a4,a5) _DISP5(n, b1,b2,b3,b4,b5) _DISP4(n, c1,c2,c3,c4) -#define _DISP15(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4,c5) _DISP5(n, a1,a2,a3,a4,a5) _DISP5(n, b1,b2,b3,b4,b5) _DISP5(n, c1,c2,c3,c4,c5) -#define _DISP16(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4,c5, d1) _DISP5(n, a1,a2,a3,a4,a5) _DISP5(n, b1,b2,b3,b4,b5) _DISP5(n, c1,c2,c3,c4,c5) _DISP1(n, d1) - -#define _DISPO0(n) -#define _DISPO1(n, _1) n(_1) -#define _DISPO2(n, _1, _2) n(_1) n(_2) -#define _DISPO3(n, v, v2, v3) n(v) n(v2) n(v3) -#define _DISPO4(n, v, v2, v3, v4) n(v) n(v2) n(v3) n(v4) -#define _DISPO5(n, v, ...) n v _DISPO4(n, __VA_ARGS__) -#define _DISPO6(n, v, ...) n v _DISPO5(n, __VA_ARGS__) -#define _DISPO7(n, v, ...) n v _DISPO6(n, __VA_ARGS__) -#define _DISPO8(n, v, ...) n v _DISPO7(n, __VA_ARGS__) -#define _DISPO9(n, a1,a2,a3,a4, b1,b2,b3,b4, c1) _DISPO4(n, a1,a2,a3,a4) _DISPO3(n, b1,b2,b3) _DISPO2(n, b4,c1) -#define _DISPO10(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2) _DISPO4(n, a1,a2,a3,a4) _DISPO4(n, b1,b2,b3,b4) _DISPO2(n, c1,c2) -#define _DISPO11(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3) _DISPO4(n, a1,a2,a3,a4) _DISPO4(n, b1,b2,b3,b4) _DISPO3(n, c1,c2,c3) -#define _DISPO12(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3,c4) _DISPO4(n, a1,a2,a3,a4) _DISPO4(n, b1,b2,b3,b4) _DISPO4(n, c1,c2,c3,c4) -#define _DISPO13(n, a1,a2,a3,a4,a5, b1,b2,b3,b4, c1,c2,c3,c4) _DISPO5(n, a1,a2,a3,a4,a5) _DISPO4(n, b1,b2,b3,b4) _DISPO4(n, c1,c2,c3,c4) -#define _DISPO14(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4) _DISPO5(n, a1,a2,a3,a4,a5) _DISPO5(n, b1,b2,b3,b4,b5) _DISPO4(n, c1,c2,c3,c4) -#define _DISPO15(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4,c5) _DISPO5(n, a1,a2,a3,a4,a5) _DISPO5(n, b1,b2,b3,b4,b5) _DISPO5(n, c1,c2,c3,c4,c5) -#define _DISPO16(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4,c5, d1) _DISPO5(n, a1,a2,a3,a4,a5) _DISPO5(n, b1,b2,b3,b4,b5) _DISPO5(n, c1,c2,c3,c4,c5) _DISPO1(n, d1) +#define TU_DISP0(n) +#define TU_DISP1(n, _1) n _1 +#define TU_DISP2(n, _1, _2) n _1 n _2 +#define TU_DISP3(n, v, v2, v3) n v n v2 n v3 +#define TU_DISP4(n, v, v2, v3, v4) n v n v2 n v3 n v4 +#define TU_DISP5(n, a1,a2,a3, b1,b2 ) TU_DISP3(n, a1,a2,a3) TU_DISP2(n, b1,b2) +#define TU_DISP6(n, a1,a2,a3, b1,b2,b3) TU_DISP3(n, a1,a2,a3) TU_DISP3(n, b1,b2,b3) +#define TU_DISP7(n, a1,a2,a3,a4, b1,b2,b3 ) TU_DISP4(n, a1,a2,a3,a4) TU_DISP3(n, b1,b2,b3) +#define TU_DISP8(n, a1,a2,a3,a4, b1,b2,b3,b4) TU_DISP4(n, a1,a2,a3,a4) TU_DISP4(n, b1,b2,b3,b4) +#define TU_DISP9(n, a1,a2,a3,a4, b1,b2,b3,b4, c1 ) TU_DISP4(n, a1,a2,a3,a4) TU_DISP3(n, b1,b2,b3 ) TU_DISP2(n, b4,c1) +#define TU_DISP10(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2 ) TU_DISP4(n, a1,a2,a3,a4) TU_DISP4(n, b1,b2,b3,b4) TU_DISP2(n, c1,c2) +#define TU_DISP11(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3 ) TU_DISP4(n, a1,a2,a3,a4) TU_DISP4(n, b1,b2,b3,b4) TU_DISP3(n, c1,c2,c3) +#define TU_DISP12(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3,c4) TU_DISP4(n, a1,a2,a3,a4) TU_DISP4(n, b1,b2,b3,b4) TU_DISP4(n, c1,c2,c3,c4) +#define TU_DISP13(n, a1,a2,a3,a4,a5, b1,b2,b3,b4, c1,c2,c3,c4) TU_DISP5(n, a1,a2,a3,a4,a5) TU_DISP4(n, b1,b2,b3,b4) TU_DISP4(n, c1,c2,c3,c4) +#define TU_DISP14(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4 ) TU_DISP5(n, a1,a2,a3,a4,a5) TU_DISP5(n, b1,b2,b3,b4,b5) TU_DISP4(n, c1,c2,c3,c4) +#define TU_DISP15(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4,c5 ) TU_DISP5(n, a1,a2,a3,a4,a5) TU_DISP5(n, b1,b2,b3,b4,b5) TU_DISP5(n, c1,c2,c3,c4,c5) +#define TU_DISP16(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4,c5, d1) TU_DISP5(n, a1,a2,a3,a4,a5) TU_DISP5(n, b1,b2,b3,b4,b5) TU_DISP5(n, c1,c2,c3,c4,c5) TU_DISP1(n, d1) + +#define TU_DISPO0(n) +#define TU_DISPO1(n, _1) n(_1) +#define TU_DISPO2(n, _1, _2) n(_1) n(_2) +#define TU_DISPO3(n, v, v2, v3) n(v) n(v2) n(v3) +#define TU_DISPO4(n, v, v2, v3, v4) n(v) n(v2) n(v3) n(v4) +#define TU_DISPO5(n, a1,a2,a3, b1,b2 ) TU_DISPO3(n, a1,a2,a3) TU_DISPO2(n, b1,b2) +#define TU_DISPO6(n, a1,a2,a3, b1,b2,b3) TU_DISPO3(n, a1,a2,a3) TU_DISPO3(n, b1,b2,b3) +#define TU_DISPO7(n, a1,a2,a3,a4, b1,b2,b3 ) TU_DISPO4(n, a1,a2,a3,a4) TU_DISPO3(n, b1,b2,b3) +#define TU_DISPO8(n, a1,a2,a3,a4, b1,b2,b3,b4) TU_DISPO4(n, a1,a2,a3,a4) TU_DISPO4(n, b1,b2,b3,b4) +#define TU_DISPO9(n, a1,a2,a3,a4, b1,b2,b3,b4, c1) TU_DISPO4(n, a1,a2,a3,a4) TU_DISPO3(n, b1,b2,b3) TU_DISPO2(n, b4,c1) +#define TU_DISPO10(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2) TU_DISPO4(n, a1,a2,a3,a4) TU_DISPO4(n, b1,b2,b3,b4) TU_DISPO2(n, c1,c2) +#define TU_DISPO11(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3) TU_DISPO4(n, a1,a2,a3,a4) TU_DISPO4(n, b1,b2,b3,b4) TU_DISPO3(n, c1,c2,c3) +#define TU_DISPO12(n, a1,a2,a3,a4, b1,b2,b3,b4, c1,c2,c3,c4) TU_DISPO4(n, a1,a2,a3,a4) TU_DISPO4(n, b1,b2,b3,b4) TU_DISPO4(n, c1,c2,c3,c4) +#define TU_DISPO13(n, a1,a2,a3,a4,a5, b1,b2,b3,b4, c1,c2,c3,c4) TU_DISPO5(n, a1,a2,a3,a4,a5) TU_DISPO4(n, b1,b2,b3,b4) TU_DISPO4(n, c1,c2,c3,c4) +#define TU_DISPO14(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4) TU_DISPO5(n, a1,a2,a3,a4,a5) TU_DISPO5(n, b1,b2,b3,b4,b5) TU_DISPO4(n, c1,c2,c3,c4) +#define TU_DISPO15(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4,c5) TU_DISPO5(n, a1,a2,a3,a4,a5) TU_DISPO5(n, b1,b2,b3,b4,b5) TU_DISPO5(n, c1,c2,c3,c4,c5) +#define TU_DISPO16(n, a1,a2,a3,a4,a5, b1,b2,b3,b4,b5, c1,c2,c3,c4,c5, d1) TU_DISPO5(n, a1,a2,a3,a4,a5) TU_DISPO5(n, b1,b2,b3,b4,b5) TU_DISPO5(n, c1,c2,c3,c4,c5) TU_DISPO1(n, d1) #define TU_DISPA(n, a) n a #define TU_DISPA1(n, a, _1) TU_DISPA(n, (TU_EXP a, TU_EXP _1)) -#define TU_DISPA2(n, a, _1, _2) TU_DISPA(n, (TU_EXP a, TU_EXP _1))/* -*/ TU_DISPA(n, (TU_EXP a, TU_EXP _2)) -#define TU_DISPA3(n, a, _1, _2, _3) \ - TU_DISPA(n, (TU_EXP a, TU_EXP _1))/* -*/ TU_DISPA(n, (TU_EXP a, TU_EXP _2))/* -*/ TU_DISPA(n, (TU_EXP a, TU_EXP _3)) +#define TU_DISPA2(n, a, _1, _2) TU_DISPA(n, (TU_EXP a, TU_EXP _1)) TU_DISPA(n, (TU_EXP a, TU_EXP _2)) +#define TU_DISPA3(n, a, _1, _2, _3) TU_DISPA(n, (TU_EXP a, TU_EXP _1)) TU_DISPA(n, (TU_EXP a, TU_EXP _2)) TU_DISPA(n, (TU_EXP a, TU_EXP _3)) #define TU_DISPA4(n, a, a1,a2, b1,b2) TU_DISPA2(n,a, a1,a2) TU_DISPA2(n,a, b1,b2) #define TU_DISPA5(n, a, a1,a2,a3, b1,b2) TU_DISPA3(n,a, a1,a2,a3) TU_DISPA2(n,a, b1,b2) #define TU_DISPA6(n, a, a1,a2,a3, b1,b2,b3) TU_DISPA3(n,a, a1,a2,a3) TU_DISPA3(n,a, b1,b2,b3) @@ -80,29 +80,10 @@ // Macro to obtain a numbered macro for argument counts // - Raw variant #define TU_GM_I(SUF,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,COUNT,...) SUF##COUNT -#define TU_GM(SUF,...) TU_GM_I(SUF, __VA_ARGS__,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0) +#define TU_GM(SUF,...) TU_EXP1( TU_GM_I(SUF, __VA_ARGS__,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0) ) // - _DISP based variant (for iteration) -#define TU_GMX(...) TU_GM(_DISP, __VA_ARGS__) -#define TU_GMA(...) TU_GM(TU_DISPA, __VA_ARGS__) - -// Sizes of structures -#define TU_SO(name, ...) sizeof(TU_DATANAME(name)) -#define MAX2(a, b) (a < b ? b : a) -#define MAXS2(a, b) (TU_SO a < TU_SO b ? TU_SO b : TU_SO a) -#define MAXS3(a, b, c) MAX2(MAXS2(a, b), TU_SO c) -#define MAXS4(a, b, c, d) MAX2(MAXS2(a, b), MAXS2(c, d)) -#define MAXS5(a, b, c, d, e) MAX2(MAXS3(a, b, c), MAXS2(d, e)) -#define MAXS6(a, b, c, d, e, f) MAX2(MAXS3(a, b, c), MAXS3(d, e, f)) -#define MAXS7(a, b, c, d, e, f, g) MAX2(MAXS3(a, b, c), MAXS4(d, e, f, g)) -#define MAXS8(a, b, c, d, e, f, g, h) MAX2(MAXS4(a, b, c, d), MAXS4(e, f, g, h)) -#define MAXS9(a, b, c, d, e, f, g, h, i) MAX2(MAXS4(a, b, c, d), MAXS5(e, f, g, h, i)) -#define MAXS10(a, b, c, d, e, f, g, h, i, j) MAX2(MAXS5(a, b, c, d, e), MAXS5(f, g, h, i, j)) -#define MAXS11(a, b, c, d, e, f, g, h, i, j, k) MAX2(MAXS6(a, b, c, d, e, f), MAXS5(g, h, i, j, k)) -#define MAXS12(a, b, c, d, e, f, g, h, i, j, k, l) MAX2(MAXS6(a, b, c, d, e, f), MAXS6(g, h, i, j, k, l)) -#define MAXS13(a1,a2,a3,a4,a5,a6,a7, b1,b2,b3,b4,b5,b6) MAX2(MAXS7(a1,a2,a3,a4,a5,a6,a7), MAXS6(b1,b2,b3,b4,b5,b6)) -#define MAXS14(a1,a2,a3,a4,a5,a6,a7, b1,b2,b3,b4,b5,b6,b7) MAX2(MAXS7(a1,a2,a3,a4,a5,a6,a7), MAXS7(b1,b2,b3,b4,b5,b6,b7)) -#define MAXS15(a1,a2,a3,a4,a5,a6,a7,a8, b1,b2,b3,b4,b5,b6,b7) MAX2(MAXS8(a1,a2,a3,a4,a5,a6,a7,a8), MAXS7(b1,b2,b3,b4,b5,b6,b7)) -#define MAXS16(a1,a2,a3,a4,a5,a6,a7,a8, b1,b2,b3,b4,b5,b6,b7,b8) MAX2(MAXS8(a1,a2,a3,a4,a5,a6,a7,a8), MAXS8(b1,b2,b3,b4,b5,b6,b7,b8)) +#define TU_GMX(...) TU_EXP1( TU_GM(TU_DISP, __VA_ARGS__) ) +#define TU_GMA(...) TU_EXP1( TU_GM(TU_DISPA, __VA_ARGS__) ) // TODO: use `decltype` in place of the `class` argument to TU_MATCH/TU_IFLET // "match"-like statement @@ -119,12 +100,12 @@ */} #define TU_MATCH_BIND1(TAG, VAR, NAME) /*MATCH_BIND*/ auto& NAME = (VAR).as_##TAG(); (void)&NAME; #define TU_MATCH_BIND2_(TAG, v1,v2, n1,n2) TU_MATCH_BIND1(TAG, v1, n1) TU_MATCH_BIND1(TAG, v2, n2) -#define TU_MATCH_BIND2(...) TU_MATCH_BIND2_(__VA_ARGS__) // << Exists to cause expansion of the vars +#define TU_MATCH_BIND2(...) TU_EXP1( TU_MATCH_BIND2_(__VA_ARGS__) ) // << Exists to cause expansion of the vars #define TU_MATCH_ARM(CLASS, VAR, NAME, TAG, ...) case CLASS::TAG_##TAG: {/* */ TU_GM(TU_MATCH_BIND, TU_EXP VAR)(TAG, TU_EXP VAR , TU_EXP NAME)/* */ __VA_ARGS__/* */} break; -#define TU_MATCH_ARMS(CLASS, VAR, NAME, ...) TU_GMA(__VA_ARGS__)(TU_MATCH_ARM, (CLASS, VAR, NAME), __VA_ARGS__) +#define TU_MATCH_ARMS(CLASS, VAR, NAME, ...) TU_EXP1( TU_GMA(__VA_ARGS__)(TU_MATCH_ARM, (CLASS, VAR, NAME), __VA_ARGS__) ) #define TU_IFLET(CLASS, VAR, TAG, NAME, ...) if(VAR.tag() == CLASS::TAG_##TAG) { auto& NAME = VAR.as_##TAG(); (void)&NAME; __VA_ARGS__ } @@ -143,8 +124,7 @@ // Define a tagged union constructor #define TU_CONS(__name, name, ...) TU_CONS_I(__name, name, TU_DATANAME(name)) -// Type definitions -#define TU_EXP(...) __VA_ARGS__ +// Type definitions_ #define TU_TYPEDEF(name, ...) typedef __VA_ARGS__ TU_DATANAME(name);/* */ @@ -164,19 +144,18 @@ // "tag_from_str" internals #define TU_FROMSTR_CASE(tag,...) else if(str == #tag) return TAG_##tag;/* */ -#define TU_FROMSTR_CASES(...) TU_GMX(__VA_ARGS__)(TU_FROMSTR_CASE,__VA_ARGS__) +#define TU_FROMSTR_CASES(...) TU_EXP1( TU_GMX(__VA_ARGS__)(TU_FROMSTR_CASE,__VA_ARGS__) ) #define TU_UNION_FIELD(tag, ...) TU_DATANAME(tag) tag;/* */ -#define TU_UNION_FIELDS(...) TU_GMX(__VA_ARGS__)(TU_UNION_FIELD,__VA_ARGS__) +#define TU_UNION_FIELDS(...) TU_EXP1( TU_GMX(__VA_ARGS__)(TU_UNION_FIELD,__VA_ARGS__) ) -#define MAXS(...) TU_GM(MAXS,__VA_ARGS__)(__VA_ARGS__) -#define TU_CONSS(_name, ...) TU_GMA(__VA_ARGS__)(TU_CONS, (_name), __VA_ARGS__) -#define TU_TYPEDEFS(...) TU_GMX(__VA_ARGS__)(TU_TYPEDEF ,__VA_ARGS__) -#define TU_TAGS(...) TU_GMX(__VA_ARGS__)(TU_TAG ,__VA_ARGS__) -#define TU_DEST_CASES(...) TU_GMX(__VA_ARGS__)(TU_DEST_CASE,__VA_ARGS__) -#define TU_MOVE_CASES(...) TU_GMX(__VA_ARGS__)(TU_MOVE_CASE,__VA_ARGS__) -#define TU_TOSTR_CASES(...) TU_GMX(__VA_ARGS__)(TU_TOSTR_CASE ,__VA_ARGS__) +#define TU_CONSS(_name, ...) TU_EXP1( TU_GMA(__VA_ARGS__)(TU_CONS, (_name), __VA_ARGS__) ) +#define TU_TYPEDEFS(...) TU_EXP1( TU_GMX(__VA_ARGS__)(TU_TYPEDEF ,__VA_ARGS__) ) +#define TU_TAGS(...) TU_EXP1( TU_GMX(__VA_ARGS__)(TU_TAG ,__VA_ARGS__) ) +#define TU_DEST_CASES(...) TU_EXP1( TU_GMX(__VA_ARGS__)(TU_DEST_CASE ,__VA_ARGS__) ) +#define TU_MOVE_CASES(...) TU_EXP1( TU_GMX(__VA_ARGS__)(TU_MOVE_CASE ,__VA_ARGS__) ) +#define TU_TOSTR_CASES(...) TU_EXP1( TU_GMX(__VA_ARGS__)(TU_TOSTR_CASE,__VA_ARGS__) ) /** * Define a new tagged union @@ -191,7 +170,7 @@ * ); * ``` */ -#define TAGGED_UNION(_name, _def, ...) TAGGED_UNION_EX(_name, (), _def, (__VA_ARGS__), (), (), ()) +#define TAGGED_UNION(_name, _def, ...) TU_EXP1( TAGGED_UNION_EX(_name, (), _def, (TU_EXP(__VA_ARGS__)), (), (), ()) ) #define TAGGED_UNION_EX(_name, _inherit, _def, _variants, _extra_move, _extra_assign, _extra) \ class _name TU_EXP _inherit { \ typedef _name self_t;/* diff --git a/src/main.cpp b/src/main.cpp index 3eb385f7..4c8d3104 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -239,19 +239,18 @@ int main(int argc, char *argv[]) crate_name = ::std::string(params.infile.begin() + s, params.infile.begin() + e); for(auto& b : crate_name) { - switch(b) - { - case '0' ... '9': - case 'A' ... 'Z': - case 'a' ... 'z': - case '_': - break; - case '-': - b = '_'; - break; - default: - break; - } + if ('0' <= b && b <= '9') { + } + else if ('A' <= b && b <= 'Z') { + } + else if (b == '_') { + } + else if (b == '-') { + b = '_'; + } + else { + // TODO: Error? + } } } crate.m_crate_name = crate_name; @@ -525,12 +524,14 @@ ProgramParams::ProgramParams(int argc, char *argv[]) if( arg[0] != '-' ) { - if( this->infile != "" ) - ; - this->infile = arg; - - if( this->infile == "" ) - ; + if (this->infile == "") + { + this->infile = arg; + } + else + { + // TODO: Error + } } else if( arg[1] != '-' ) { @@ -593,14 +594,15 @@ ProgramParams::ProgramParams(int argc, char *argv[]) } this->crate_path = argv[++i]; } - else if( strcmp(arg, "--out-dir") == 0 ) { - if( i == argc - 1 ) { - ::std::cerr << "Flag " << arg << " requires an argument" << ::std::endl; - exit(1); - } - this->output_dir = argv[++i]; - if( this->output_dir == "" ) - ; + else if (strcmp(arg, "--out-dir") == 0) { + if (i == argc - 1) { + ::std::cerr << "Flag " << arg << " requires an argument" << ::std::endl; + exit(1); + } + this->output_dir = argv[++i]; + if (this->output_dir == "") { + // TODO: Error? + } if( this->output_dir.back() != '/' ) this->output_dir += '/'; } diff --git a/src/parse/interpolated_fragment.hpp b/src/parse/interpolated_fragment.hpp index a3e72816..1b18845a 100644 --- a/src/parse/interpolated_fragment.hpp +++ b/src/parse/interpolated_fragment.hpp @@ -11,7 +11,7 @@ namespace AST { class Path; class ExprNode; class MetaItem; - template<typename T> class Named; + template<typename T> struct Named; class Item; }; diff --git a/src/parse/token.hpp b/src/parse/token.hpp index 0fcf0ed7..03117981 100644 --- a/src/parse/token.hpp +++ b/src/parse/token.hpp @@ -49,8 +49,9 @@ namespace AST { class ExprNode; class MetaItem; class Item; + template<typename T> - class Named; + struct Named; }; class InterpolatedFragment; diff --git a/vsproject/mrustc.sln b/vsproject/mrustc.sln new file mode 100644 index 00000000..a74f29e3 --- /dev/null +++ b/vsproject/mrustc.sln @@ -0,0 +1,38 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrustc", "mrustc.vcxproj", "{12AA9964-C1BD-406A-9545-43EE63230EBE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tu_test", "tu_test\tu_test.vcxproj", "{F0A80ABB-A11A-492C-B5FC-E26C29A988D8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12AA9964-C1BD-406A-9545-43EE63230EBE}.Debug|x64.ActiveCfg = Debug|x64 + {12AA9964-C1BD-406A-9545-43EE63230EBE}.Debug|x64.Build.0 = Debug|x64 + {12AA9964-C1BD-406A-9545-43EE63230EBE}.Debug|x86.ActiveCfg = Debug|Win32 + {12AA9964-C1BD-406A-9545-43EE63230EBE}.Debug|x86.Build.0 = Debug|Win32 + {12AA9964-C1BD-406A-9545-43EE63230EBE}.Release|x64.ActiveCfg = Release|x64 + {12AA9964-C1BD-406A-9545-43EE63230EBE}.Release|x64.Build.0 = Release|x64 + {12AA9964-C1BD-406A-9545-43EE63230EBE}.Release|x86.ActiveCfg = Release|Win32 + {12AA9964-C1BD-406A-9545-43EE63230EBE}.Release|x86.Build.0 = Release|Win32 + {F0A80ABB-A11A-492C-B5FC-E26C29A988D8}.Debug|x64.ActiveCfg = Debug|x64 + {F0A80ABB-A11A-492C-B5FC-E26C29A988D8}.Debug|x64.Build.0 = Debug|x64 + {F0A80ABB-A11A-492C-B5FC-E26C29A988D8}.Debug|x86.ActiveCfg = Debug|Win32 + {F0A80ABB-A11A-492C-B5FC-E26C29A988D8}.Debug|x86.Build.0 = Debug|Win32 + {F0A80ABB-A11A-492C-B5FC-E26C29A988D8}.Release|x64.ActiveCfg = Release|x64 + {F0A80ABB-A11A-492C-B5FC-E26C29A988D8}.Release|x64.Build.0 = Release|x64 + {F0A80ABB-A11A-492C-B5FC-E26C29A988D8}.Release|x86.ActiveCfg = Release|Win32 + {F0A80ABB-A11A-492C-B5FC-E26C29A988D8}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vsproject/mrustc.vcxproj b/vsproject/mrustc.vcxproj new file mode 100644 index 00000000..1f277488 --- /dev/null +++ b/vsproject/mrustc.vcxproj @@ -0,0 +1,264 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{12AA9964-C1BD-406A-9545-43EE63230EBE}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <LinkIncremental>true</LinkIncremental> + <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>true</LinkIncremental> + <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../src/include;../src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <Optimization>Disabled</Optimization> + <PreprocessToFile>false</PreprocessToFile> + <AssemblerListingLocation>$(IntDir)dummy\%(RelativeDir)</AssemblerListingLocation> + <ObjectFileName>$(IntDir)dummy\%(RelativeDir)</ObjectFileName> + </ClCompile> + <Link> + <TargetMachine>MachineX86</TargetMachine> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Console</SubSystem> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../src/include;../src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <PreprocessToFile>false</PreprocessToFile> + <AssemblerListingLocation>$(IntDir)dummy\%(RelativeDir)</AssemblerListingLocation> + <ObjectFileName>$(IntDir)dummy\%(RelativeDir)</ObjectFileName> + </ClCompile> + <Link> + <TargetMachine>MachineX86</TargetMachine> + <GenerateDebugInformation>true</GenerateDebugInformation> + <SubSystem>Console</SubSystem> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <AdditionalIncludeDirectories>../src/include;../src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessToFile>false</PreprocessToFile> + <AssemblerListingLocation>$(IntDir)dummy\%(RelativeDir)</AssemblerListingLocation> + <ObjectFileName>$(IntDir)dummy\%(RelativeDir)</ObjectFileName> + <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <AdditionalIncludeDirectories>../src/include;../src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessToFile>false</PreprocessToFile> + <AssemblerListingLocation>$(IntDir)dummy\%(RelativeDir)</AssemblerListingLocation> + <ObjectFileName>$(IntDir)dummy\%(RelativeDir)</ObjectFileName> + <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\src\ast\ast.cpp" /> + <ClCompile Include="..\src\ast\crate.cpp" /> + <ClCompile Include="..\src\ast\dump.cpp" /> + <ClCompile Include="..\src\ast\expr.cpp" /> + <ClCompile Include="..\src\ast\path.cpp" /> + <ClCompile Include="..\src\ast\pattern.cpp" /> + <ClCompile Include="..\src\ast\types.cpp" /> + <ClCompile Include="..\src\debug.cpp" /> + <ClCompile Include="..\src\expand\cfg.cpp" /> + <ClCompile Include="..\src\expand\concat.cpp" /> + <ClCompile Include="..\src\expand\derive.cpp" /> + <ClCompile Include="..\src\expand\file_line.cpp" /> + <ClCompile Include="..\src\expand\format_args.cpp" /> + <ClCompile Include="..\src\expand\lang_item.cpp" /> + <ClCompile Include="..\src\expand\macro_rules.cpp" /> + <ClCompile Include="..\src\expand\mod.cpp" /> + <ClCompile Include="..\src\expand\std_prelude.cpp" /> + <ClCompile Include="..\src\expand\stringify.cpp" /> + <ClCompile Include="..\src\hir\crate_ptr.cpp" /> + <ClCompile Include="..\src\hir\expr.cpp" /> + <ClCompile Include="..\src\hir\expr_ptr.cpp" /> + <ClCompile Include="..\src\hir\from_ast.cpp" /> + <ClCompile Include="..\src\hir\from_ast_expr.cpp" /> + <ClCompile Include="..\src\hir\generic_params.cpp" /> + <ClCompile Include="..\src\hir\hir.cpp" /> + <ClCompile Include="..\src\hir\path.cpp" /> + <ClCompile Include="..\src\hir\pattern.cpp" /> + <ClCompile Include="..\src\hir\type.cpp" /> + <ClCompile Include="..\src\hir\type_ptr.cpp" /> + <ClCompile Include="..\src\hir\visitor.cpp" /> + <ClCompile Include="..\src\hir_conv\bind.cpp" /> + <ClCompile Include="..\src\hir_conv\constant_evaluation.cpp" /> + <ClCompile Include="..\src\hir_conv\expand_type.cpp" /> + <ClCompile Include="..\src\hir_conv\resolve_ufcs.cpp" /> + <ClCompile Include="..\src\hir_expand\annotate_value_usage.cpp" /> + <ClCompile Include="..\src\hir_expand\closures.cpp" /> + <ClCompile Include="..\src\hir_expand\ufcs_everything.cpp" /> + <ClCompile Include="..\src\hir_typeck\expr_check.cpp" /> + <ClCompile Include="..\src\hir_typeck\expr_cs.cpp" /> + <ClCompile Include="..\src\hir_typeck\expr_visit.cpp" /> + <ClCompile Include="..\src\hir_typeck\helpers.cpp" /> + <ClCompile Include="..\src\hir_typeck\impl_ref.cpp" /> + <ClCompile Include="..\src\hir_typeck\outer.cpp" /> + <ClCompile Include="..\src\hir_typeck\static.cpp" /> + <ClCompile Include="..\src\macro_rules\eval.cpp" /> + <ClCompile Include="..\src\macro_rules\mod.cpp" /> + <ClCompile Include="..\src\macro_rules\parse.cpp" /> + <ClCompile Include="..\src\main.cpp" /> + <ClCompile Include="..\src\mir\from_hir.cpp" /> + <ClCompile Include="..\src\mir\from_hir_match.cpp" /> + <ClCompile Include="..\src\mir\mir.cpp" /> + <ClCompile Include="..\src\mir\mir_ptr.cpp" /> + <ClCompile Include="..\src\parse\expr.cpp" /> + <ClCompile Include="..\src\parse\interpolated_fragment.cpp" /> + <ClCompile Include="..\src\parse\lex.cpp" /> + <ClCompile Include="..\src\parse\parseerror.cpp" /> + <ClCompile Include="..\src\parse\paths.cpp" /> + <ClCompile Include="..\src\parse\pattern.cpp" /> + <ClCompile Include="..\src\parse\root.cpp" /> + <ClCompile Include="..\src\parse\token.cpp" /> + <ClCompile Include="..\src\parse\types.cpp" /> + <ClCompile Include="..\src\rc_string.cpp" /> + <ClCompile Include="..\src\resolve\absolute.cpp" /> + <ClCompile Include="..\src\resolve\index.cpp" /> + <ClCompile Include="..\src\resolve\use.cpp" /> + <ClCompile Include="..\src\serialise.cpp" /> + <ClCompile Include="..\src\span.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\src\ast\ast.hpp" /> + <ClInclude Include="..\src\ast\attrs.hpp" /> + <ClInclude Include="..\src\ast\crate.hpp" /> + <ClInclude Include="..\src\ast\expr.hpp" /> + <ClInclude Include="..\src\ast\generics.hpp" /> + <ClInclude Include="..\src\ast\item.hpp" /> + <ClInclude Include="..\src\ast\macro.hpp" /> + <ClInclude Include="..\src\ast\path.hpp" /> + <ClInclude Include="..\src\ast\pattern.hpp" /> + <ClInclude Include="..\src\ast\types.hpp" /> + <ClInclude Include="..\src\common.hpp" /> + <ClInclude Include="..\src\coretypes.hpp" /> + <ClInclude Include="..\src\expand\cfg.hpp" /> + <ClInclude Include="..\src\expand\macro_rules.hpp" /> + <ClInclude Include="..\src\hir\crate_ptr.hpp" /> + <ClInclude Include="..\src\hir\expr.hpp" /> + <ClInclude Include="..\src\hir\expr_ptr.hpp" /> + <ClInclude Include="..\src\hir\from_ast.hpp" /> + <ClInclude Include="..\src\hir\generic_params.hpp" /> + <ClInclude Include="..\src\hir\hir.hpp" /> + <ClInclude Include="..\src\hir\path.hpp" /> + <ClInclude Include="..\src\hir\pattern.hpp" /> + <ClInclude Include="..\src\hir\type.hpp" /> + <ClInclude Include="..\src\hir\type_ptr.hpp" /> + <ClInclude Include="..\src\hir\visitor.hpp" /> + <ClInclude Include="..\src\hir_conv\main_bindings.hpp" /> + <ClInclude Include="..\src\hir_expand\main_bindings.hpp" /> + <ClInclude Include="..\src\hir_typeck\expr_visit.hpp" /> + <ClInclude Include="..\src\hir_typeck\helpers.hpp" /> + <ClInclude Include="..\src\hir_typeck\impl_ref.hpp" /> + <ClInclude Include="..\src\hir_typeck\main_bindings.hpp" /> + <ClInclude Include="..\src\hir_typeck\static.hpp" /> + <ClInclude Include="..\src\include\compile_error.hpp" /> + <ClInclude Include="..\src\include\cpp_unpack.h" /> + <ClInclude Include="..\src\include\debug.hpp" /> + <ClInclude Include="..\src\include\main_bindings.hpp" /> + <ClInclude Include="..\src\include\rc_string.hpp" /> + <ClInclude Include="..\src\include\rustic.hpp" /> + <ClInclude Include="..\src\include\serialise.hpp" /> + <ClInclude Include="..\src\include\serialiser_texttree.hpp" /> + <ClInclude Include="..\src\include\span.hpp" /> + <ClInclude Include="..\src\include\synext.hpp" /> + <ClInclude Include="..\src\include\synext_decorator.hpp" /> + <ClInclude Include="..\src\include\synext_macro.hpp" /> + <ClInclude Include="..\src\include\tagged_union.hpp" /> + <ClInclude Include="..\src\macro_rules\macro_rules.hpp" /> + <ClInclude Include="..\src\macro_rules\macro_rules_ptr.hpp" /> + <ClInclude Include="..\src\macro_rules\pattern_checks.hpp" /> + <ClInclude Include="..\src\mir\from_hir.hpp" /> + <ClInclude Include="..\src\mir\main_bindings.hpp" /> + <ClInclude Include="..\src\mir\mir.hpp" /> + <ClInclude Include="..\src\mir\mir_ptr.hpp" /> + <ClInclude Include="..\src\parse\common.hpp" /> + <ClInclude Include="..\src\parse\eTokenType.enum.h" /> + <ClInclude Include="..\src\parse\interpolated_fragment.hpp" /> + <ClInclude Include="..\src\parse\lex.hpp" /> + <ClInclude Include="..\src\parse\parseerror.hpp" /> + <ClInclude Include="..\src\parse\token.hpp" /> + <ClInclude Include="..\src\parse\tokentree.hpp" /> + <ClInclude Include="..\src\resolve\main_bindings.hpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/vsproject/mrustc.vcxproj.filters b/vsproject/mrustc.vcxproj.filters new file mode 100644 index 00000000..a25022bf --- /dev/null +++ b/vsproject/mrustc.vcxproj.filters @@ -0,0 +1,402 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\src\debug.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\main.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\rc_string.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\serialise.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\span.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\ast\ast.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\ast\crate.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\ast\expr.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\ast\path.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\ast\pattern.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\ast\types.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\cfg.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\concat.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\derive.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\file_line.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\format_args.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\lang_item.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\macro_rules.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\mod.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\std_prelude.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\expand\stringify.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\crate_ptr.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\expr.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\expr_ptr.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\from_ast.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\from_ast_expr.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\generic_params.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\hir.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\path.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\pattern.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\type.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\type_ptr.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir\visitor.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_conv\bind.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_conv\constant_evaluation.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_conv\expand_type.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_conv\resolve_ufcs.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_expand\annotate_value_usage.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_expand\closures.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_expand\ufcs_everything.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_typeck\expr_check.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_typeck\expr_cs.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_typeck\expr_visit.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_typeck\helpers.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_typeck\impl_ref.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_typeck\outer.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\hir_typeck\static.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\macro_rules\eval.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\macro_rules\mod.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\macro_rules\parse.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\mir\from_hir.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\mir\from_hir_match.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\mir\mir.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\mir\mir_ptr.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\expr.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\interpolated_fragment.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\lex.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\parseerror.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\paths.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\pattern.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\root.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\token.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\parse\types.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\resolve\absolute.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\resolve\index.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\resolve\use.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\src\ast\dump.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\src\common.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\coretypes.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\ast.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\attrs.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\crate.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\expr.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\generics.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\item.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\macro.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\path.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\pattern.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\ast\types.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\expand\cfg.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\expand\macro_rules.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\crate_ptr.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\expr.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\expr_ptr.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\from_ast.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\generic_params.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\hir.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\path.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\pattern.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\type.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\type_ptr.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir\visitor.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir_conv\main_bindings.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir_expand\main_bindings.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir_typeck\expr_visit.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir_typeck\helpers.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir_typeck\impl_ref.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir_typeck\main_bindings.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\hir_typeck\static.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\cpp_unpack.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\compile_error.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\debug.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\main_bindings.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\rc_string.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\rustic.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\serialise.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\serialiser_texttree.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\span.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\synext.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\synext_decorator.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\synext_macro.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\include\tagged_union.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\macro_rules\macro_rules.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\macro_rules\macro_rules_ptr.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\macro_rules\pattern_checks.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\mir\from_hir.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\mir\main_bindings.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\mir\mir.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\mir\mir_ptr.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\parse\eTokenType.enum.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\parse\common.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\parse\interpolated_fragment.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\parse\lex.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\parse\parseerror.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\parse\token.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\parse\tokentree.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\src\resolve\main_bindings.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/vsproject/tu_test/main.cpp b/vsproject/tu_test/main.cpp new file mode 100644 index 00000000..48f7a26c --- /dev/null +++ b/vsproject/tu_test/main.cpp @@ -0,0 +1,46 @@ + +#include "../../src/include/tagged_union.hpp" + +TAGGED_UNION_EX(TestTu, (), Foo, ( + (Foo, struct { + }), + (Bar, struct { + }), + (Baz, unsigned int) + ), + (), (), () + ); +TAGGED_UNION(TestTu2, Foo, + (Foo, struct { + }), + (Bar, struct { + }), + (Baz, unsigned int) + ); + +int main() +{ + TestTu tmp; + + tmp = TestTu(123); + + TestTu tmp2 = TestTu::make_Bar({}); + + TU_MATCHA( (tmp), (e), + (Foo, + ), + (Bar, + ), + (Baz, + ) + ) + + TU_MATCHA((tmp,tmp2), (e,e2), + (Foo, + ), + (Bar, + ), + (Baz, + ) + ) +} diff --git a/vsproject/tu_test/tu_test.vcxproj b/vsproject/tu_test/tu_test.vcxproj new file mode 100644 index 00000000..4b43ecc8 --- /dev/null +++ b/vsproject/tu_test/tu_test.vcxproj @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{F0A80ABB-A11A-492C-B5FC-E26C29A988D8}</ProjectGuid> + <RootNamespace>tu_test</RootNamespace> + <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <IntDir>$(Platform)\$(Configuration)\</IntDir> + <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <IntDir>$(Platform)\$(Configuration)\</IntDir> + <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <PreprocessToFile>false</PreprocessToFile> + <PreprocessKeepComments>false</PreprocessKeepComments> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <SDLCheck>true</SDLCheck> + <PreprocessToFile>false</PreprocessToFile> + <PreprocessKeepComments>false</PreprocessKeepComments> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <PreprocessToFile>false</PreprocessToFile> + <PreprocessKeepComments>false</PreprocessKeepComments> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <PreprocessToFile>false</PreprocessToFile> + <PreprocessKeepComments>false</PreprocessKeepComments> + </ClCompile> + <Link> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="main.cpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/vsproject/tu_test/tu_test.vcxproj.filters b/vsproject/tu_test/tu_test.vcxproj.filters new file mode 100644 index 00000000..0d8d9e45 --- /dev/null +++ b/vsproject/tu_test/tu_test.vcxproj.filters @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="main.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project>
\ No newline at end of file |