This file contains 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
import classNames from "classnames"; | |
import React, { useEffect, useRef, useState } from "react"; | |
import { UnfoldMore, UnfoldLess, Dismiss, Restore } from "./toc-buttons.js"; | |
enum State { | |
Normal, | |
Expanded, | |
Collapsed, | |
} |
This file contains 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
expect(expression).toBeInstanceOf(FunctionCallAST); | |
const fn = expression as FunctionCallAST; | |
expect(fn.Parameters).toHaveLength(1); | |
expect(fn.Parameters[0]).toBeInstanceOf(BinaryExpressionAST); | |
const param = fn.Parameters[0] as BinaryExpressionAST; | |
// ... same for param.LHS and .RHS, etc. |
This file contains 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
test("Parse_ParameterListSimple", () => { | |
const { expression } = ParseEntireExpression(Tokens("F(a+b)")); | |
expect(expression).toBeInstanceOf(FunctionCallAST); | |
expect(expression.Parameters).toHaveLength(1); | |
expect(expression.Parameters[0]).toBeInstanceOf(BinaryExpressionAST); | |
expect(expression.Parameters[0].Type).toBe(TokenType.Plus); | |
expect(expression.Parameters[0].LHS).toBeInstanceOf(VariableAST); | |
expect(expression.Parameters[0].LHS.VariableName).toBe("b"); | |
expect(expression.Parameters[0].RHS).toBeInstanceOf(VariableAST); | |
expect(expression.Parameters[0].RHS.VariableName).toBe("a"); |
This file contains 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
test("Parse_ParameterListSimple", () => { | |
expect( | |
AST.FormatTree( | |
ParseEntireExpression(Tokens("F(a+b)")), | |
/*includePositions=*/ false | |
) | |
).toMatchInlineSnapshot(` | |
"FunctionCallAST | |
Parameters: | |
[0] BinaryExpressionAST |
This file contains 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
TEST(ConcertTest, ComputesPrice) { | |
EXPECT_THAT( | |
ForecastOutcome(PARSE_TEXT_PROTO(R"( | |
artist { | |
id: 2584 | |
name: "Beyonce" | |
avg_price: 200 | |
} | |
capacity: 500 | |
)")), |
This file contains 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
ConcertProto ExpensiveConcert() { | |
ConcertProto concert; | |
ArtistProto* artist = concert.mutable_artist(); | |
artist->set_id(kBeyonceId); | |
artist->set_name("Beyonce"); | |
artist->set_avg_price(200); | |
concert.set_capacity(500); | |
return concert; | |
} |
This file contains 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
+import {ok} from 'assert'; | |
+ | |
+const assert: <T>(item: T|undefined) => asserts | |
+ | |
function BuildClasses(topics: ReadonlyArray<TypedTopic>, classes: ClassMap) { | |
for (const topic of topics) { | |
if (!IsClass(topic)) continue; | |
This file contains 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
function ForwardDeclareClasses(topics: ReadonlyArray<TypedTopic>): ClassMap { | |
// ... | |
// ... | |
for (const topic of topics) { | |
if (!IsClass(topic)) continue; | |
// ... | |
classes.set( | |
topic.Subject.toString(), new Class(topic.Subject, /* ... */)); | |
} |
This file contains 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
- if (classes.size === 0) { | |
- throw new Error('Expected Class topics to exist.'); | |
- } |
This file contains 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
// Top-level module: | |
const wellKnownTypes = [ ... ]; // Top-level var with more than one "Type". | |
const dataType = ...; | |
function ForwardDeclareClasses(topics: ReadonlyArray<TypedTopic>): ClassMap { | |
const classes = new Map<string, Class>(); | |
for (const wk of wellKnownTypes) { | |
classes.set(wk.subject.toString(), wk); | |
} | |
classes.set(dataType.subject.toString(), wk); |
NewerOlder