From ccca2d38cf7a006a6f7354d1b744afad64920158 Mon Sep 17 00:00:00 2001 From: Lauren Tan Date: Tue, 29 Nov 2022 15:23:56 -0500 Subject: [PATCH] [ez] Delete some old files --- compiler/forget/CODING_STYLE.md | 86 --- .../{ARCHITECTURE.md => OLD_ARCHITECTURE.md} | 2 + .../__tests__/fixtures/hir-svg/component.svg | 724 ------------------ .../src/__tests__/fixtures/hir-svg/switch.svg | 301 -------- 4 files changed, 2 insertions(+), 1111 deletions(-) delete mode 100644 compiler/forget/CODING_STYLE.md rename compiler/forget/{ARCHITECTURE.md => OLD_ARCHITECTURE.md} (98%) delete mode 100644 compiler/forget/src/__tests__/fixtures/hir-svg/component.svg delete mode 100644 compiler/forget/src/__tests__/fixtures/hir-svg/switch.svg diff --git a/compiler/forget/CODING_STYLE.md b/compiler/forget/CODING_STYLE.md deleted file mode 100644 index d133eb5e46..0000000000 --- a/compiler/forget/CODING_STYLE.md +++ /dev/null @@ -1,86 +0,0 @@ -# Coding Style - -## Naming - -### Abbrevations - -Abbrevations can be preferable over full name when it helps with making things -stand out for recognition and code searching, e.g. - -1. when we naming a notion specific to us (e.g. `MemoCache`, `SCCGraph`). -2. when it helps with avoid naming clash with 3rd-party libraries (e.g. Babel). -3. when it forms a nice symmetry with its counter parts (e.g. `Val`/`Ref`). -4. when it's canonical in the indursty/academia (e.g. `Def`/`Use`). -5. when it helps with differentiating internal concepts, e.g. it's very common - to name AST and IR a bit differently (alternatively, always use namespace). - -- `Val`: Value -- `Ref`: Reference -- `Stmt`: Statement -- `Expr`: Expression -- `Decl`: Declaration -- `Func`: Function -- `Param`: Parameter -- `Ident`: Identifier - -- `Mut`: Mutable -- `Immut`: Immutable - -- `Def`: Definition -- `Use`: Uses -- `Instr`: Instruction - -- `Dep`: Dependency -- `Infer`: Inference -- `Alloc`: Allocation -- `Gen`: Generator - -## ADT vs Classes - -For trivial cases where ADT and classes are interchangble, classes are favorable -due to its conciseness. - -For cases where some algebraic structures or type gynastics are needed -(e.g. IR/LIR), the constraints of classes and subtyping can be a burden to work -around so we prefer to use our own ADT-like encoding for its flexibility and -extensibility. - -For instance, `IR.Val` is an ADT tagged by `ValKind`: - -1. It would have been more difficult to encode `InputVal` and `ReactiveVal` as - types since they are defined upon refinements. -2. It's impossible (or at least non-trivial and painful) to type things like - `Val#reference`, `Ref` and `ValAST` accurately with classes since - things may not follow the subtyping rules (it may be possible, but painful, - to manually annotate every variance carefully, which TS only recently add - support, to get things type check). Instead, we have more freedom to define - types for each variants. We can even pattern match on type parameter with - [conditional types](https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#handbook-content) to get pretty far to somewhere like [GADT](https://en.wikipedia.org/wiki/Generalized_algebraic_data_type). -3. It offers more safety gurantees over `instanceof` by default unless you opted - into visitor pattern which is also painful to write because it's closing at - data axis instead of operation axis (see [Expresion Problem](https://wiki.c2.com/?ExpressionProblem)). - -N.B. The fact that we are not encoding ADT like [the way TS handbook suggested to encode discrinminated unions](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes-func.html#discriminated-unions) but instead encoding it -as a combination of `enum` + `interface` + factory functions is merely a mean to -take some advantage of subtyping for more code sharing (e.g. the common part of -`Val` variants are therefore extracted in `Val`). - -## Type Safety - -TBD - -## Test - -TBD - -## Format - -TBD - -## Commit Messages - -Add `[Tag]` to help with finding reviewers (Github tags are not visible everywhere) - -## Code Review - -TBD diff --git a/compiler/forget/ARCHITECTURE.md b/compiler/forget/OLD_ARCHITECTURE.md similarity index 98% rename from compiler/forget/ARCHITECTURE.md rename to compiler/forget/OLD_ARCHITECTURE.md index 722cbad83c..51500a691e 100644 --- a/compiler/forget/ARCHITECTURE.md +++ b/compiler/forget/OLD_ARCHITECTURE.md @@ -1,5 +1,7 @@ # Architecture Overview +Note: This refers to the non-HIR based architecture. + ## Diagnostics Diagnostics are a way to indicate to the user that the compiler has encountered an unexpected issue, and are created in a structured format that is reused in the Playground to imperatively draw model markers ("squigglies") at their respective node locations. diff --git a/compiler/forget/src/__tests__/fixtures/hir-svg/component.svg b/compiler/forget/src/__tests__/fixtures/hir-svg/component.svg deleted file mode 100644 index 7e95d97dcc..0000000000 --- a/compiler/forget/src/__tests__/fixtures/hir-svg/component.svg +++ /dev/null @@ -1,724 +0,0 @@ - - - - - - -BuildDefUseGraph - - - -v0 - -v0 (freeze props$1.items @ freeze props$1.items) <update> - - - -v1 - -v1 (freeze items$2 @ Const freeze items$2 = freeze props$1.items) <assign> - - - -v0->v1 - - - - - -v2 - -v2 (freeze props$1.maxItems @ freeze props$1.maxItems) <update> - - - -v0->v2 - - - - - -v12 - -v12 (freeze items$2 @ If (freeze items$2) then:bb3 else:bb2) <update> - - - -v1->v12 - - - - - -v3 - -v3 (freeze maxItems$3 @ Const freeze maxItems$3 = freeze props$1.maxItems) <assign> - - - -v2->v3 - - - - - -v10 - -v10 (freeze maxItems$3 @ Call mutable Math$8.max(mutable $9, freeze maxItems$3)) <update> - - - -v3->v10 - - - - - -v4 - -v4 (readonly renderedItems$4 @ Const readonly renderedItems$4 = Array []) <assign> - - - -v18 - -v18 (readonly renderedItems$4.length @ readonly renderedItems$4.length) <update> - - - -v4->v18 - - - - - -v49 - -v49 (mutable renderedItems$4.push @ Call mutable renderedItems$4.push(mutable $15)) <update> - - - -v4->v49 - - - - - -v62 - -v62 (<join> @ <no-instr>) <update> - - - -v4->v62 - - - - - -v71 - -v71 (<join> @ <no-instr>) <update> - - - -v4->v71 - - - - - -v19 - -v19 (readonly count$17 @ Const readonly count$17 = readonly renderedItems$4.length) <assign> - - - -v18->v19 - - - - - -v34 - -v34 (freeze renderedItems$4 @ JSX <freeze $18>{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}</freeze $18>) <update> - - - -v18->v34 - - - - - -v51 - -v51 (readonly renderedItems$4.length @ Binary readonly renderedItems$4.length >= readonly max$7) <update> - - - -v49->v51 - - - - - -v62->v18 - - - - - -v71->v49 - - - - - -v5 - -v5 (mutable Set$6 @ New mutable Set$6()) <update> - - - -v6 - -v6 (readonly seen$5 @ Const readonly seen$5 = New mutable Set$6()) <assign> - - - -v39 - -v39 (mutable seen$5.has @ Call mutable seen$5.has(freeze item$10)) <update> - - - -v6->v39 - - - - - -v56 - -v56 (<join> @ <no-instr>) <update> - - - -v6->v56 - - - - - -v59 - -v59 (<join> @ <no-instr>) <update> - - - -v6->v59 - - - - - -v39->v56 - - - - - -v39->v59 - - - - - -v43 - -v43 (mutable seen$5.add @ Call mutable seen$5.add(freeze item$10)) <update> - - - -v56->v43 - - - - - -v59->v39 - - - - - -v7 - -v7 (readonly $9 @ Const readonly $9 = 0) <assign> - - - -v9 - -v9 (mutable $9 @ Call mutable Math$8.max(mutable $9, freeze maxItems$3)) <update> - - - -v7->v9 - - - - - -v8 - -v8 (mutable Math$8.max @ Call mutable Math$8.max(mutable $9, freeze maxItems$3)) <update> - - - -v11 - -v11 (readonly max$7 @ Const readonly max$7 = Call mutable Math$8.max(mutable $9, freeze maxItems$3)) <assign> - - - -v52 - -v52 (readonly max$7 @ Binary readonly renderedItems$4.length >= readonly max$7) <update> - - - -v11->v52 - - - - - -v72 - -v72 (<join> @ <no-instr>) <update> - - - -v11->v72 - - - - - -v52->v72 - - - - - -v72->v52 - - - - - -v13 - -v13 (readonly $11 @ Const readonly $11 = null) <assign> - - - -v15 - -v15 (readonly $11 @ Binary freeze item$10 == readonly $11) <update> - - - -v13->v15 - - - - - -v14 - -v14 (freeze item$10 @ Binary freeze item$10 == readonly $11) <update> - - - -v40 - -v40 (freeze item$10 @ Call mutable seen$5.has(freeze item$10)) <update> - - - -v14->v40 - - - - - -v57 - -v57 (<join> @ <no-instr>) <update> - - - -v14->v57 - - - - - -v40->v57 - - - - - -v57->v14 - - - - - -v44 - -v44 (freeze item$10 @ Call mutable seen$5.add(freeze item$10)) <update> - - - -v57->v44 - - - - - -v16 - -v16 (freeze $12 @ Const freeze $12 = Binary freeze item$10 == readonly $11) <assign> - - - -v17 - -v17 (freeze $12 @ If (freeze $12) then:bb8 else:bb9) <update> - - - -v16->v17 - - - - - -v38 - -v38 (freeze $13 @ Const freeze $13 = freeze $12) <assign> - - - -v17->v38 - - - - - -v42 - -v42 (freeze $13 @ If (freeze $13) then:bb1 else:bb4) <update> - - - -v38->v42 - - - - - -v25 - -v25 (freeze count$17 @ JSX <freeze $20>{freeze count$17}{freeze $21}</freeze $20>) <update> - - - -v19->v25 - - - - - -v20 - -v20 (readonly $18 @ Const readonly $18 = "div") <assign> - - - -v30 - -v30 (freeze $18 @ JSX <freeze $18>{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}</freeze $18>) <update> - - - -v20->v30 - - - - - -v21 - -v21 (readonly $19 @ Const readonly $19 = " -      ") <assign> - - - -v31 - -v31 (freeze $19 @ JSX <freeze $18>{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}</freeze $18>) <update> - - - -v21->v31 - - - - - -v22 - -v22 (readonly $20 @ Const readonly $20 = "h1") <assign> - - - -v24 - -v24 (freeze $20 @ JSX <freeze $20>{freeze count$17}{freeze $21}</freeze $20>) <update> - - - -v22->v24 - - - - - -v23 - -v23 (readonly $21 @ Const readonly $21 = " Items") <assign> - - - -v26 - -v26 (freeze $21 @ JSX <freeze $20>{freeze count$17}{freeze $21}</freeze $20>) <update> - - - -v23->v26 - - - - - -v27 - -v27 (readonly $22 @ Const readonly $22 = JSX <freeze $20>{freeze count$17}{freeze $21}</freeze $20>) <assign> - - - -v32 - -v32 (freeze $22 @ JSX <freeze $18>{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}</freeze $18>) <update> - - - -v27->v32 - - - - - -v28 - -v28 (readonly $23 @ Const readonly $23 = " -      ") <assign> - - - -v33 - -v33 (freeze $23 @ JSX <freeze $18>{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}</freeze $18>) <update> - - - -v28->v33 - - - - - -v29 - -v29 (readonly $24 @ Const readonly $24 = " -    ") <assign> - - - -v35 - -v35 (freeze $24 @ JSX <freeze $18>{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}</freeze $18>) <update> - - - -v29->v35 - - - - - -v36 - -v36 (readonly $25 @ Const readonly $25 = JSX <freeze $18>{freeze $19}{freeze $22}{freeze $23}{freeze renderedItems$4}{freeze $24}</freeze $18>) <assign> - - - -v37 - -v37 (freeze $25 @ Return freeze $25) <update> - - - -v36->v37 - - - - - -v41 - -v41 (readonly $13 @ Const readonly $13 = Call mutable seen$5.has(freeze item$10)) <assign> - - - -v41->v42 - - - - - -v43->v56 - - - - - -v43->v59 - - - - - -v47 - -v47 (freeze item$10 @ JSX <freeze $14>{freeze item$10}</freeze $14>) <update> - - - -v44->v47 - - - - - -v47->v57 - - - - - -v45 - -v45 (readonly $14 @ Const readonly $14 = "div") <assign> - - - -v46 - -v46 (freeze $14 @ JSX <freeze $14>{freeze item$10}</freeze $14>) <update> - - - -v45->v46 - - - - - -v48 - -v48 (readonly $15 @ Const readonly $15 = JSX <freeze $14>{freeze item$10}</freeze $14>) <assign> - - - -v50 - -v50 (mutable $15 @ Call mutable renderedItems$4.push(mutable $15)) <update> - - - -v48->v50 - - - - - -v51->v18 - - - - - -v51->v62 - - - - - -v51->v71 - - - - - -v53 - -v53 (freeze $16 @ Const freeze $16 = Binary readonly renderedItems$4.length >= readonly max$7) <assign> - - - -v54 - -v54 (freeze $16 @ If (freeze $16) then:bb2 else:bb1) <update> - - - -v53->v54 - - - - - -v55 - -v55 (freeze props$1 @ <no-instr>) <assign> - - - -v55->v0 - - - - - diff --git a/compiler/forget/src/__tests__/fixtures/hir-svg/switch.svg b/compiler/forget/src/__tests__/fixtures/hir-svg/switch.svg deleted file mode 100644 index 6022b483e5..0000000000 --- a/compiler/forget/src/__tests__/fixtures/hir-svg/switch.svg +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - -BuildDefUseGraph - - - -v0 - -v0 (readonly x$2 @ Let readonly x$2 = Array []) <assign> - - - -v7 - -v7 (mutable x$2.push @ Call mutable x$2.push(freeze props$1.p2)) <update> - - - -v0->v7 - - - - - -v12 - -v12 (readonly x$2 @ readonly x$2) <update> - - - -v0->v12 - - - - - -v15 - -v15 (freeze x$2 @ JSX <freeze Component$0 data={freeze x$2} ></freeze Component$0>) <update> - - - -v0->v15 - - - - - -v9 - -v9 (mutable x$2.push @ Call mutable x$2.push(freeze props$1.p3)) <update> - - - -v7->v9 - - - - - -v12->v15 - - - - - -v13 - -v13 (readonly y$3 @ Reassign readonly y$3 = readonly x$2) <assign> - - - -v12->v13 - - - - - -v1 - -v1 (readonly y$3 @ Let readonly y$3 = undefined) <assign> - - - -v17 - -v17 (mutable y$3.push @ Call mutable y$3.push(freeze props$1.p4)) <update> - - - -v1->v17 - - - - - -v20 - -v20 (freeze y$3 @ JSX <freeze Component$0 data={freeze y$3} >{freeze child$6}</freeze Component$0>) <update> - - - -v17->v20 - - - - - -v2 - -v2 (readonly $4 @ Const readonly $4 = false) <assign> - - - -v6 - -v6 (readonly $4 @ Switch (freeze props$1.p0);   Case readonly $5: bb4;   Case readonly $4: bb2;   Default: bb1) <update> - - - -v2->v6 - - - - - -v3 - -v3 (readonly $5 @ Const readonly $5 = true) <assign> - - - -v5 - -v5 (readonly $5 @ Switch (freeze props$1.p0);   Case readonly $5: bb4;   Case readonly $4: bb2;   Default: bb1) <update> - - - -v3->v5 - - - - - -v4 - -v4 (freeze props$1.p0 @ Switch (freeze props$1.p0);   Case readonly $5: bb4;   Case readonly $4: bb2;   Default: bb1) <update> - - - -v8 - -v8 (freeze props$1.p2 @ Call mutable x$2.push(freeze props$1.p2)) <update> - - - -v4->v8 - - - - - -v18 - -v18 (freeze props$1.p4 @ Call mutable y$3.push(freeze props$1.p4)) <update> - - - -v4->v18 - - - - - -v25 - -v25 (<join> @ <no-instr>) <update> - - - -v4->v25 - - - - - -v10 - -v10 (freeze props$1.p3 @ Call mutable x$2.push(freeze props$1.p3)) <update> - - - -v8->v10 - - - - - -v25->v18 - - - - - -v9->v12 - - - - - -v10->v25 - - - - - -v11 - -v11 (readonly y$3 @ Reassign readonly y$3 = Array []) <assign> - - - -v13->v17 - - - - - -v14 - -v14 (freeze Component$0 @ JSX <freeze Component$0 data={freeze x$2} ></freeze Component$0>) <update> - - - -v19 - -v19 (freeze Component$0 @ JSX <freeze Component$0 data={freeze y$3} >{freeze child$6}</freeze Component$0>) <update> - - - -v14->v19 - - - - - -v16 - -v16 (readonly child$6 @ Const readonly child$6 = JSX <freeze Component$0 data={freeze x$2} ></freeze Component$0>) <assign> - - - -v21 - -v21 (freeze child$6 @ JSX <freeze Component$0 data={freeze y$3} >{freeze child$6}</freeze Component$0>) <update> - - - -v16->v21 - - - - - -v22 - -v22 (readonly $7 @ Const readonly $7 = JSX <freeze Component$0 data={freeze y$3} >{freeze child$6}</freeze Component$0>) <assign> - - - -v23 - -v23 (freeze $7 @ Return freeze $7) <update> - - - -v22->v23 - - - - - -v24 - -v24 (freeze props$1 @ <no-instr>) <assign> - - - -v24->v4 - - - - -