cinera_handmade.network/pervognsen/bitwise/bitwise/bitwise008_1.hmml

52 lines
3.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[video member=pervognsen stream_platform=twitch project=bitwise title="Type Checking/Inference, Constant Evaluation" vod_platform=youtube id=-eCwBwTbjAI annotator=Miblo]
[0:13][Recap and set the stage for the day][:speech]
[0:47][Explain why the approach to ordering the dependency graph implemented on the last stream didn't work][:parsing :research]
[5:17][Describe the new approach, installing and resolving entities][:parsing :research]
[10:47][The new ingredient: the notion of incomplete types, much like C][:parsing :research]
[12:09][Describe complete_type() and related functions, with usage examples][:parsing :research]
[16:25][Describe resolve_expr() and related functions][:parsing :research]
[20:44][Show how it ends up working][:parsing :run]
[25:24][Note the pleasant absence of on-demand dependency resolution][:parsing :research]
[26:57][Q&A][:speech]
[27:22][@ws_ubi][@pervognsen Are you recording the videos so I could watch it later?]
[27:55][Summarise our notion of incomplete types, and its difference from that of C][:parsing :research]
[28:37][@orcnz29][@pervognsen Would you be able to push the code you just explained?]
[29:06][Commit "Code for day 8 prestream"][:admin]
[29:50][@dr_kegel][Only one question where you asserted on lvalue only expr and you return a token-rvalue, I think it was a deref][:parsing]
[30:50][Consider enabling the type resolver to handle compound literals][:parsing :speech]
[32:28][Introduce resolve_expr_compound()][:parsing]
[39:02][:Run it to see that it works][:parsing :run]
[39:06][Add an incorrect type test in resolve_test()][:parsing]
[39:24][:Run it to see that this gets caught][:parsing]
[39:32][Add tests in resolve_test() for fewer and more arguments provided in a compound literal declaration than there are values in the type][:parsing]
[39:52][:Run it to see that it works as expected][:parsing]
[40:06][Enable resolve_expr_compound() to handle arrays][:parsing]
[44:04][:Run it to see that it works as expected][:parsing]
[44:26][Add a test for arrays in resolve_test()][:parsing]
[44:35][:Run it and crash in resolve_expr_compound()][:parsing]
[44:46][Fix the crash in resolve_expr_compound(), double-check that it's correct and rewrite the compound literal array test case in resolve_test()][:parsing]
[47:33][:Run it to see that that does the trick][:parsing]
[47:42][Add tests in resolve_test() for fewer and more arguments provided in a compound literal array declaration than there are values in the type][:parsing]
[47:58][:Run it to see that it works][:parsing]
[48:06][Add a test in resolve_test() that types unify][:parsing]
[48:28][:Run it to see that it works][:parsing]
[48:36][Enable resolve_expr_compound() to handle expected types][:parsing]
[56:17][Add a test of our expected type code in resolve_test()][:parsing]
[56:44][Step through resolve_expr_compound() to see how it handles our expected type][:parsing :run]
[57:26][Add an expected struct type test in resolve_test()][:parsing]
[57:40][:Run it to see that it works][:parsing]
[58:16][Add a test for unhandled resolving of expected function arguments in resolve_test()][:parsing]
[59:55][:Run it to see that it parses but doesn't resolve][:parsing]
[1:00:13][Introduce resolve_decl_func()][:parsing]
[1:03:08][:Run it to see that it correctly resolves the function declaration][:parsing]
[1:03:57][Introduce resolve_expr_call()][:parsing]
[1:12:23][Add function call tests in resolve_test(), and find that they work][:parsing :programming :run]
[1:14:19][Note that we're not yet traversing the function body, and recap the day's work][:parsing :speech]
[1:15:48][Q&A][:speech]
[1:17:31][A few words on type inference][:parsing :speech]
[1:18:02][@buzzfizz64][@pervognsen Whats the expected type thing again? I missed it][:parsing]
[1:19:58][How C handles expected types][:language :parsing :speech]
[1:21:53][Passing separate data vs packed structs in C][:language :speech]
[1:23:52][Wrap up the main stream][:speech]
[/video]