Conversation
We support this now.
We use the new type DSL now.
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a C++ type literal DSL (cpp/type) and migrates existing interop call sites/tests/docs to use the new type forms (keywords like (:* t), templates like (std.vector char), etc.), alongside updating the CppInterOp include paths and a few runtime/analyzer/codegen refinements.
Changes:
- Introduces
processor::analyze_typeto resolve the new C++ type DSL and routes relevant analyzers through it (cpp/cast,cpp/unsafe-cast,cpp/unbox,cpp/new,catchtypes, etc.). - Updates C++ interop integration to use
CppInterOp/*headers and adjusts interpreter type naming. - Adds/updates extensive
cpp/typeDSL tests and expands book documentation (including a new troubleshooting FAQ).
Reviewed changes
Copilot reviewed 190 out of 190 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| compiler+runtime/third-party/cppinterop | Bumps cppinterop submodule to version that supports new DSL/integration. |
| compiler+runtime/test/jank/cpp/unsafe-cast/pass-same-type.jank | Migrates unsafe-cast type args to DSL (int, (:* int)). |
| compiler+runtime/test/jank/cpp/unsafe-cast/pass-pointer-to-object-to-pointer-to-object.jank | Migrates pointer types to DSL form. |
| compiler+runtime/test/jank/cpp/unsafe-cast/pass-pointer-to-object-to-pointer-to-function.jank | Migrates type resolution away from cpp/-prefixed symbol where applicable and uses (:* ...). |
| compiler+runtime/test/jank/cpp/unsafe-cast/pass-pointer-to-function-to-pointer-to-object.jank | Migrates pointer types / function pointer type usage to DSL. |
| compiler+runtime/test/jank/cpp/unsafe-cast/pass-int-to-pointer.jank | Migrates intptr_t* / size_t casting to DSL. |
| compiler+runtime/test/jank/cpp/opaque-box/unbox/pass-round-trip.jank | Migrates unbox target type to DSL pointer form. |
| compiler+runtime/test/jank/cpp/opaque-box/box/pass-reference.jank | Migrates unbox target type to DSL pointer form. |
| compiler+runtime/test/jank/cpp/literal-type/volatile/pass-void.jank | Adds passing test for :volatile type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/volatile/pass-primitive.jank | Adds passing test for :volatile primitive type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/volatile/pass-pointer.jank | Adds passing test for :volatile pointer type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/volatile/pass-pointer-to-function.jank | Adds passing test for :volatile pointer-to-function type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/volatile/fail-zero-args.jank | Adds failing test for invalid :volatile arity. |
| compiler+runtime/test/jank/cpp/literal-type/volatile/fail-two-args.jank | Adds failing test for invalid :volatile arity. |
| compiler+runtime/test/jank/cpp/literal-type/volatile/fail-reference.jank | Adds failing test for invalid :volatile reference usage. |
| compiler+runtime/test/jank/cpp/literal-type/volatile/fail-non-type-arg.jank | Adds failing test for invalid :volatile argument type. |
| compiler+runtime/test/jank/cpp/literal-type/unsigned/pass-signed.jank | Adds passing test for nested :unsigned/:signed resolution. |
| compiler+runtime/test/jank/cpp/literal-type/unsigned/pass-int.jank | Adds passing test for :unsigned int. |
| compiler+runtime/test/jank/cpp/literal-type/unsigned/pass-char.jank | Adds passing test for :unsigned char. |
| compiler+runtime/test/jank/cpp/literal-type/unsigned/fail-zero-args.jank | Adds failing test for invalid :unsigned arity. |
| compiler+runtime/test/jank/cpp/literal-type/unsigned/fail-void.jank | Adds failing test for invalid :unsigned void. |
| compiler+runtime/test/jank/cpp/literal-type/unsigned/fail-two-args.jank | Adds failing test for invalid :unsigned arity. |
| compiler+runtime/test/jank/cpp/literal-type/unsigned/fail-non-type-arg.jank | Adds failing test for invalid :unsigned argument type. |
| compiler+runtime/test/jank/cpp/literal-type/unsigned/fail-float.jank | Adds failing test for invalid :unsigned float. |
| compiler+runtime/test/jank/cpp/literal-type/template/pass-variadic.jank | Adds passing test for variadic template instantiation. |
| compiler+runtime/test/jank/cpp/literal-type/template/pass-type.jank | Adds passing test for type template instantiation. |
| compiler+runtime/test/jank/cpp/literal-type/template/pass-non-type.jank | Adds passing test for non-type template arg instantiation. |
| compiler+runtime/test/jank/cpp/literal-type/template/pass-default-args.jank | Adds passing test for default template args instantiation. |
| compiler+runtime/test/jank/cpp/literal-type/template/fail-type-for-non-type.jank | Adds failing test for template arg kind mismatch. |
| compiler+runtime/test/jank/cpp/literal-type/template/fail-substitution-failure.jank | Adds failing test for SFINAE/substitution failure. |
| compiler+runtime/test/jank/cpp/literal-type/template/fail-non-type-for-type.jank | Adds failing test for template arg kind mismatch. |
| compiler+runtime/test/jank/cpp/literal-type/template/fail-insufficient-args.jank | Adds failing test for insufficient template args. |
| compiler+runtime/test/jank/cpp/literal-type/template/fail-extra-args.jank | Adds failing test for too many template args. |
| compiler+runtime/test/jank/cpp/literal-type/symbol/skip-pointer-to-value.jank | Removes legacy symbol-based literal-type test (replaced by DSL suite). |
| compiler+runtime/test/jank/cpp/literal-type/symbol/pass-pointer-to-string.jank | Removes legacy symbol-based literal-type test (replaced by DSL suite). |
| compiler+runtime/test/jank/cpp/literal-type/symbol/pass-pointer-to-pointer-to-int.jank | Removes legacy symbol-based literal-type test (replaced by DSL suite). |
| compiler+runtime/test/jank/cpp/literal-type/symbol/pass-pointer-to-int.jank | Removes legacy symbol-based literal-type test (replaced by DSL suite). |
| compiler+runtime/test/jank/cpp/literal-type/symbol/fail-value-position.jank | Removes legacy symbol-based literal-type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/symbol/fail-unqualified.jank | Removes legacy symbol-based literal-type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/symbol/fail-pointer-to-function.jank | Removes legacy symbol-based literal-type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/string/skip-reference.jank | Removes legacy string-literal type test (DSL supersedes string literal approach). |
| compiler+runtime/test/jank/cpp/literal-type/string/pass-template.jank | Removes legacy string-literal type test (DSL supersedes string literal approach). |
| compiler+runtime/test/jank/cpp/literal-type/string/pass-pointer.jank | Removes legacy string-literal type test (DSL supersedes string literal approach). |
| compiler+runtime/test/jank/cpp/literal-type/string/pass-int.jank | Removes legacy string-literal type test (DSL supersedes string literal approach). |
| compiler+runtime/test/jank/cpp/literal-type/string/fail-unknown-type.jank | Removes legacy string-literal type failure test (DSL routes errors differently). |
| compiler+runtime/test/jank/cpp/literal-type/string/fail-non-string-literal.jank | Removes legacy string-literal type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/string/fail-non-literal.jank | Removes legacy string-literal type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/string/fail-no-arg.jank | Removes legacy string-literal type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/string/fail-more-args.jank | Removes legacy string-literal type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/string/fail-invalid-substitution.jank | Removes legacy string-literal type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/string/fail-empty.jank | Removes legacy string-literal type failure test. |
| compiler+runtime/test/jank/cpp/literal-type/signed/pass-unsigned.jank | Adds passing test for nested :signed/:unsigned resolution. |
| compiler+runtime/test/jank/cpp/literal-type/signed/pass-int.jank | Adds passing test for :signed int. |
| compiler+runtime/test/jank/cpp/literal-type/signed/pass-char.jank | Adds passing test for :signed char. |
| compiler+runtime/test/jank/cpp/literal-type/signed/fail-zero-args.jank | Adds failing test for invalid :signed arity. |
| compiler+runtime/test/jank/cpp/literal-type/signed/fail-void.jank | Adds failing test for invalid :signed void. |
| compiler+runtime/test/jank/cpp/literal-type/signed/fail-two-args.jank | Adds failing test for invalid :signed arity. |
| compiler+runtime/test/jank/cpp/literal-type/signed/fail-non-type-arg.jank | Adds failing test for invalid :signed argument type. |
| compiler+runtime/test/jank/cpp/literal-type/signed/fail-float.jank | Adds failing test for invalid :signed float. |
| compiler+runtime/test/jank/cpp/literal-type/short/pass-long.jank | Adds passing test for :short modifier on :long int. |
| compiler+runtime/test/jank/cpp/literal-type/short/pass-int.jank | Adds passing test for :short int. |
| compiler+runtime/test/jank/cpp/literal-type/short/fail-zero-args.jank | Adds failing test for invalid :short arity. |
| compiler+runtime/test/jank/cpp/literal-type/short/fail-void.jank | Adds failing test for invalid :short void. |
| compiler+runtime/test/jank/cpp/literal-type/short/fail-two-args.jank | Adds failing test for invalid :short arity. |
| compiler+runtime/test/jank/cpp/literal-type/short/fail-short.jank | Adds failing test for redundant :short application. |
| compiler+runtime/test/jank/cpp/literal-type/short/fail-non-type-arg.jank | Adds failing test for invalid :short argument type. |
| compiler+runtime/test/jank/cpp/literal-type/short/fail-long-double.jank | Adds failing test for invalid :short use on long double. |
| compiler+runtime/test/jank/cpp/literal-type/short/fail-float.jank | Adds failing test for invalid :short float. |
| compiler+runtime/test/jank/cpp/literal-type/short/fail-char.jank | Adds failing test for invalid :short char. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/pass-primitive.jank | Adds passing test for :&& primitive reference. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/pass-pointer.jank | Adds passing test for :&& pointer reference. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/pass-lvalue-ref.jank | Adds passing test for :&& applied to lvalue ref type form. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/pass-convertible-type.jank | Adds passing test for :&& with move conversion. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/fail-zero-args.jank | Adds failing test for invalid :&& arity. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/fail-void.jank | Adds failing test for invalid :&& void. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/fail-unrelated-type.jank | Adds failing test for invalid conversion into :&& target type. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/fail-two-args.jank | Adds failing test for invalid :&& arity. |
| compiler+runtime/test/jank/cpp/literal-type/rvalue-ref/fail-non-type-arg.jank | Adds failing test for invalid :&& argument type. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/pass-void.jank | Adds passing test for pointer type DSL on void. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/pass-primitive.jank | Adds passing test for pointer type DSL on primitive. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/pass-pointer.jank | Adds passing test for nested pointer. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/pass-function.jank | Adds passing test for pointer to function type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/pass-array.jank | Adds passing test for pointer to array type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/fail-zero-args.jank | Adds failing test for invalid :* arity. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/fail-two-args.jank | Adds failing test for invalid :* arity. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/fail-reference.jank | Adds failing test for pointer to reference. |
| compiler+runtime/test/jank/cpp/literal-type/ptr/fail-non-type-arg.jank | Adds failing test for invalid :* argument type. |
| compiler+runtime/test/jank/cpp/literal-type/member/pass-valid.jank | Adds passing test for :member type extraction. |
| compiler+runtime/test/jank/cpp/literal-type/member/pass-valid-in-base.jank | Adds passing test for :member lookup in base class. |
| compiler+runtime/test/jank/cpp/literal-type/member/fail-zero-args.jank | Adds failing test for invalid :member arity. |
| compiler+runtime/test/jank/cpp/literal-type/member/fail-value-member.jank | Adds failing test for :member where member is not a type. |
| compiler+runtime/test/jank/cpp/literal-type/member/fail-unknown-member.jank | Adds failing test for missing member. |
| compiler+runtime/test/jank/cpp/literal-type/member/fail-three-args.jank | Adds failing test for invalid :member arity. |
| compiler+runtime/test/jank/cpp/literal-type/member/fail-protected-member.jank | Adds failing test for protected type member access. |
| compiler+runtime/test/jank/cpp/literal-type/member/fail-private-member.jank | Adds failing test for private type member access. |
| compiler+runtime/test/jank/cpp/literal-type/member/fail-non-type-class.jank | Adds failing test for invalid class argument. |
| compiler+runtime/test/jank/cpp/literal-type/member/fail-non-symbol-member.jank | Adds failing test for invalid member name type. |
| compiler+runtime/test/jank/cpp/literal-type/member-ptr/pass-valid.jank | Adds passing test for :member* pointer-to-member variable type. |
| compiler+runtime/test/jank/cpp/literal-type/member-ptr/pass-valid-base.jank | Adds passing test for base member pointer lookup/usage. |
| compiler+runtime/test/jank/cpp/literal-type/member-ptr/fail-zero-args.jank | Adds failing test for invalid :member* arity. |
| compiler+runtime/test/jank/cpp/literal-type/member-ptr/fail-non-type-class.jank | Adds failing test for invalid class arg in :member*. |
| compiler+runtime/test/jank/cpp/literal-type/member-ptr/fail-mismatched-class.jank | Adds failing test for invoking member-ptr with wrong class type. |
| compiler+runtime/test/jank/cpp/literal-type/lvalue-ref/pass-rvalue-ref.jank | Adds passing test for :& on rvalue ref type. |
| compiler+runtime/test/jank/cpp/literal-type/lvalue-ref/pass-primitive.jank | Adds passing test for :& primitive. |
| compiler+runtime/test/jank/cpp/literal-type/lvalue-ref/pass-pointer.jank | Adds passing test for :& pointer. |
| compiler+runtime/test/jank/cpp/literal-type/lvalue-ref/fail-zero-args.jank | Adds failing test for invalid :& arity. |
| compiler+runtime/test/jank/cpp/literal-type/lvalue-ref/fail-void.jank | Adds failing test for invalid :& void. |
| compiler+runtime/test/jank/cpp/literal-type/lvalue-ref/fail-unrelated-type.jank | Adds failing test for invalid :& type conversion. |
| compiler+runtime/test/jank/cpp/literal-type/lvalue-ref/fail-two-args.jank | Adds failing test for invalid :& arity. |
| compiler+runtime/test/jank/cpp/literal-type/lvalue-ref/fail-non-type-arg.jank | Adds failing test for invalid :& argument type. |
| compiler+runtime/test/jank/cpp/literal-type/long/pass-long.jank | Adds passing test for nested :long. |
| compiler+runtime/test/jank/cpp/literal-type/long/pass-int.jank | Adds passing test for :long int. |
| compiler+runtime/test/jank/cpp/literal-type/long/pass-double.jank | Adds passing test for :long double. |
| compiler+runtime/test/jank/cpp/literal-type/long/fail-zero-args.jank | Adds failing test for invalid :long arity. |
| compiler+runtime/test/jank/cpp/literal-type/long/fail-void.jank | Adds failing test for invalid :long void. |
| compiler+runtime/test/jank/cpp/literal-type/long/fail-two-args.jank | Adds failing test for invalid :long arity. |
| compiler+runtime/test/jank/cpp/literal-type/long/fail-short.jank | Adds failing test for :long applied to short type. |
| compiler+runtime/test/jank/cpp/literal-type/long/fail-non-type-arg.jank | Adds failing test for invalid :long argument type. |
| compiler+runtime/test/jank/cpp/literal-type/long/fail-long-double.jank | Adds failing test for redundant :long application. |
| compiler+runtime/test/jank/cpp/literal-type/long/fail-float.jank | Adds failing test for invalid :long float. |
| compiler+runtime/test/jank/cpp/literal-type/long/fail-char.jank | Adds failing test for invalid :long char. |
| compiler+runtime/test/jank/cpp/literal-type/fn/pass-void.jank | Adds passing test for function type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/fn/pass-non-void.jank | Adds passing test for function type DSL with params. |
| compiler+runtime/test/jank/cpp/literal-type/fn/fail-zero-args.jank | Adds failing test for invalid :fn arity. |
| compiler+runtime/test/jank/cpp/literal-type/fn/fail-void-param.jank | Adds failing test for void parameter type. |
| compiler+runtime/test/jank/cpp/literal-type/fn/fail-non-type-return.jank | Adds failing test for non-type return argument. |
| compiler+runtime/test/jank/cpp/literal-type/fn/fail-non-type-param.jank | Adds failing test for non-type param argument. |
| compiler+runtime/test/jank/cpp/literal-type/fn/fail-non-seq-params.jank | Adds failing test for params arg not being a sequence. |
| compiler+runtime/test/jank/cpp/literal-type/fn/fail-invalid-param-type.jank | Adds failing test for invalid parameter type form. |
| compiler+runtime/test/jank/cpp/literal-type/const/pass-void.jank | Adds passing test for :const type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/const/pass-primitive.jank | Adds passing test for :const primitive. |
| compiler+runtime/test/jank/cpp/literal-type/const/pass-pointer.jank | Adds passing test for :const pointer. |
| compiler+runtime/test/jank/cpp/literal-type/const/fail-zero-args.jank | Adds failing test for invalid :const arity. |
| compiler+runtime/test/jank/cpp/literal-type/const/fail-two-args.jank | Adds failing test for invalid :const arity. |
| compiler+runtime/test/jank/cpp/literal-type/const/fail-reference.jank | Adds failing test for invalid :const reference usage. |
| compiler+runtime/test/jank/cpp/literal-type/const/fail-non-type-arg.jank | Adds failing test for invalid :const argument type. |
| compiler+runtime/test/jank/cpp/literal-type/array/pass-zero-sized.jank | Adds passing test for sized array type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/array/pass-unsized.jank | Adds passing test for unsized array type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/array/pass-sized.jank | Adds passing test for sized array type DSL. |
| compiler+runtime/test/jank/cpp/literal-type/array/fail-zero-args.jank | Adds failing test for invalid :array arity. |
| compiler+runtime/test/jank/cpp/literal-type/array/fail-three-args.jank | Adds failing test for invalid :array arity. |
| compiler+runtime/test/jank/cpp/literal-type/array/fail-reference.jank | Adds failing test for array-of-reference invalidity. |
| compiler+runtime/test/jank/cpp/literal-type/array/fail-non-type-arg.jank | Adds failing test for invalid array element type arg. |
| compiler+runtime/test/jank/cpp/literal-type/array/fail-non-int-size.jank | Adds failing test for invalid array size arg type. |
| compiler+runtime/test/jank/cpp/literal-type/array/fail-negative-size.jank | Adds failing test for negative array size. |
| compiler+runtime/test/jank/cpp/constructor/complex/pass-shadowed-using.jank | Adds constructor test exercising using base::base with shadowed ctor. |
| compiler+runtime/test/jank/cpp/constructor/complex/pass-literal-type.jank | Migrates ctor type argument from string cpp/type to DSL. |
| compiler+runtime/test/jank/cpp/constructor/complex/pass-aggregate-with-bases.jank | Adds aggregate initialization test with base classes. |
| compiler+runtime/test/jank/cpp/constructor/complex/pass-aggregate-multiple-conversions.jank | Adjusts aggregate test to use string fields (test intent update). |
| compiler+runtime/test/jank/cpp/constructor/complex/fail-aggregate-narrowing.jank | Adds failing test for narrowing in aggregate init. |
| compiler+runtime/test/jank/cpp/constructor/builtin/pass-literal-type.jank | Migrates primitive ctor tests to DSL ((cpp/type int) etc.). |
| compiler+runtime/test/jank/cpp/constructor/builtin/fail-void.jank | Adds failing test for constructing void. |
| compiler+runtime/test/jank/cpp/closure/pass-capture-opaque-box.jank | Migrates unbox target type to DSL. |
| compiler+runtime/test/jank/cpp/cast/pass-pointer-to-void.jank | Migrates cast target types to DSL pointer forms. |
| compiler+runtime/test/jank/cpp/cast/fail-unqualified-int.jank | Removes legacy cast failure test (type resolution rules changed). |
| compiler+runtime/test/cpp/main.cpp | Updates includes to CppInterOp/*. |
| compiler+runtime/test/cpp/jank/jit/processor.cpp | Updates includes to CppInterOp/Compatibility.h. |
| compiler+runtime/src/jank/jank/nrepl/server/core.jank | Migrates native types/unbox/cast usage to DSL forms. |
| compiler+runtime/src/jank/jank/nrepl/server/capture.jank | Migrates FILE* and std.string cast usages to DSL forms. |
| compiler+runtime/src/jank/clojure/core.jank | Migrates char const* cast usage to DSL (:* (:const char)). |
| compiler+runtime/src/cpp/main.cpp | Updates includes to CppInterOp/*. |
| compiler+runtime/src/cpp/jank/util/clang.cpp | Updates CppInterOp include and renames internal namespace for resource dir detection helper. |
| compiler+runtime/src/cpp/jank/runtime/sequence_range.cpp | Adds make_sequence_range(object_ref) implementation used by analyzer utilities. |
| compiler+runtime/src/cpp/jank/runtime/context.cpp | Updates interpreter includes to CppInterOp/*. |
| compiler+runtime/src/cpp/jank/jit/processor.cpp | Updates interpreter includes/types and adjusts interpreter pointer type. |
| compiler+runtime/src/cpp/jank/evaluate.cpp | Updates interpreter includes to CppInterOp/*. |
| compiler+runtime/src/cpp/jank/error/analyze.cpp | Adds analyze_invalid_cpp_type_dsl error constructor. |
| compiler+runtime/src/cpp/jank/error.cpp | Adds message for analyze_invalid_cpp_type_dsl. |
| compiler+runtime/src/cpp/jank/environment/check_health.cpp | Updates compatibility include to CppInterOp/Compatibility.h. |
| compiler+runtime/src/cpp/jank/codegen/processor.cpp | Adds pointer-to-member call codegen handling, aggregate init improvements, and several type handling adjustments. |
| compiler+runtime/src/cpp/jank/codegen/llvm_processor.cpp | Updates includes to CppInterOp/*. |
| compiler+runtime/src/cpp/jank/c_api.cpp | Updates compatibility include to CppInterOp/Compatibility.h. |
| compiler+runtime/src/cpp/jank/analyze/processor.cpp | Introduces analyze_type to support type DSL and routes type positions through it; adds pointer-to-member invocation analysis. |
| compiler+runtime/src/cpp/jank/analyze/cpp_util.cpp | Adds template instantiation helper w/ SFINAE trap, type helpers (base_type, char_type, is_constructible), and aggregate init member type discovery. |
| compiler+runtime/include/cpp/jank/runtime/sequence_range.hpp | Adds object_ref overload decl and tweaks template signature. |
| compiler+runtime/include/cpp/jank/runtime/rtti.hpp | Makes expect_object(object_ref) non-constexpr for startup perf. |
| compiler+runtime/include/cpp/jank/runtime/core/seq_ext.hpp | Changes rest return type to object_ref. |
| compiler+runtime/include/cpp/jank/runtime/core/seq.hpp | Simplifies second to rely on first(next(...)). |
| compiler+runtime/include/cpp/jank/jit/processor.hpp | Renames interpreter namespace type to CppInternal::Interpreter. |
| compiler+runtime/include/cpp/jank/error/analyze.hpp | Declares analyze_invalid_cpp_type_dsl. |
| compiler+runtime/include/cpp/jank/error.hpp | Adds new error kind analyze_invalid_cpp_type_dsl and its string id. |
| compiler+runtime/include/cpp/jank/analyze/processor.hpp | Declares processor::analyze_type. |
| compiler+runtime/include/cpp/jank/analyze/cpp_util.hpp | Declares new util helpers (instantiate, base_type, char_type, is_constructible, aggregate init types). |
| compiler+runtime/CMakeLists.txt | Adds new runtime source sequence_range.cpp to build. |
| book/src/troubleshooting/index.md | Adds FAQ to troubleshooting chapter list. |
| book/src/troubleshooting/getting-help.md | Adds note to check FAQ before asking for help. |
| book/src/troubleshooting/faq.md | Adds new troubleshooting FAQ page. |
| book/src/cpp-interop/native-values.md | Mentions template/member type syntax in docs. |
| book/src/cpp-interop/native-types.md | Documents the new C++ type DSL comprehensively with examples. |
| book/src/SUMMARY.md | Adds FAQ page to book sidebar and updates TODO list. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| } | ||
|
|
||
| source_type = Cpp::GetFunctionTypeFromPointerToMember(source_type, arg_type); | ||
| util::println("pointer to member fn type {}", cpp_util::get_qualified_type_name(source_type)); |
Comment on lines
+4744
to
+4749
| return error::analyze_invalid_cpp_type( | ||
| util::format("Invalid C++ type form. There were {} args expected, but {} were provided.", | ||
| expected, | ||
| count), | ||
| object_source(seq), | ||
| latest_expansion(macro_expansions)); |
Comment on lines
+5275
to
+5278
| jtl::string_builder sb; | ||
| sb(int_arg->data); | ||
| /* XXX: Safe, due to the GC. */ | ||
| args.emplace_back(int_type.data, sb.release().c_str()); |
| } | ||
|
|
||
| return Cpp::GetFunctionType(type, param_types); | ||
| ; |
Comment on lines
+2989
to
+2990
| "static_cast<struct {}*>(static_cast<jank::runtime::obj::jit_" | ||
| "closure*>({}.data)->context) };", |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is documented in the jank book chapter, also added in this PR, here.
cpp/typetest suite