Improve the TextMate grammar scopes and precision (again) (#7914)
This is a re-do of #7888 Outside a call, the grammar scoped a name as a type or a variable by its capitalization. A theme could not distinguish a type from a value with the same spelling, or a parameter, a member, or an implemented interface from any other name. Pointer member access `->` was scoped as a result arrow, which scoped `Lookup` in `regions->Lookup(x)` as a type. `entity.name.type` now applies only in a type position (after `:`, `->`, `as`, `adapt`, or `require`, or in an `impl`) and to the name a nominal declaration declares. A qualifier, in a declared name like `fn N.Base(T: type).F()` or in a type, is `entity.name.scope-resolution` nested in `entity.name.type`. As in the parser, a name is a qualifier when its parameter lists are followed by `.`. Parameters, `let` bindings, choice alternatives, members, implemented interfaces, primitive types, `import`, and the strings naming a builtin or a library have their own scopes, and brackets use the C++ grammar's scopes. A `->` written directly after its operand is member access; no result arrow in the repository is written that way. The sample palette renders each scope that depends on context differently, and `tmlanguage.py` now supports nested captures. In 17 of the 19 themes measured, the VS Code built-ins plus One Dark Pro, Night Owl, Tokyo Night, and Nord, 13% to 27% of the characters in hand-written Carbon change color or style. A theme loses a color where `.` is now punctuation, where word operators like `as` are no longer control-flow keywords, or where a name outside a type position is no longer a type. Assisted-by: Claude Code
No files matched your search
@@ -49,9 +49,11 @@ utils/textmate/render_sample.py utils/textmate/Samples/*.carbon
|
||||
```
|
||||
|
||||
The colors are a palette built for this grammar rather than an editor's theme.
|
||||
Each family of related scopes gets one color, and bold and italic distinguish
|
||||
the scopes within a family, so every scope the grammar emits renders differently
|
||||
and a change to what the grammar scopes is visible in the image. Unscoped text
|
||||
Each family of related scopes gets one color, and bold, italic, and underline
|
||||
distinguish the scopes within a family. Every scope the grammar picks from
|
||||
context renders differently, so a change to what the grammar scopes is visible
|
||||
in the image. Scopes that follow from the spelling alone, such as a bracket's
|
||||
shape, can share a rendering, since the text already shows them. Unscoped text
|
||||
is dimmer than any scope's color, so text the grammar misses stands out. A scope
|
||||
with no entry of its own takes its family's color and style, so give a new scope
|
||||
an entry to keep every scope distinct.
|
||||
with no entry of its own takes its family's color and style, so give a new
|
||||
context-dependent scope an entry of its own.
|
||||
@@ -5,9 +5,9 @@
|
||||
<text style="white-space:pre" x="12" y="45"><tspan fill="#6c7086">2 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Exceptions. See /LICENSE for license information.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="64"><tspan fill="#6c7086">3 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="83"><tspan fill="#6c7086">4 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="102"><tspan fill="#6c7086">5 </tspan><tspan fill="#cba6f7">choice</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">SomeChoice</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#a6adc8">) {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086">6 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Val1</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086">7 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Val2</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">array</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">5</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">t</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086">8 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Val3</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086">9 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="102"><tspan fill="#6c7086">5 </tspan><tspan fill="#cba6f7">choice</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">SomeChoice</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086">6 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#eba0ac" font-weight="bold">Val1</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086">7 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#eba0ac" font-weight="bold">Val2</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">array</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">5</tspan><tspan fill="#74c7ec">),</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">t</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">),</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086">8 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#eba0ac" font-weight="bold">Val3</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086">9 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
</g></svg>
|
||||
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.9 KiB |
@@ -8,6 +8,8 @@
|
||||
//@dump-sem-ir-begin
|
||||
//@dump-sem-ir-end
|
||||
//@include-in-dumps
|
||||
//@include-in-dumps
|
||||
//@dump-sem-ir-begin with trailing text is an ordinary comment
|
||||
//@dump-sem-ir-
|
||||
//no whitespace after double slash
|
||||
/* invalid comment pattern. */
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="328" viewBox="0 0 721 328">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="366" viewBox="0 0 721 366">
|
||||
<rect width="100%" height="100%" fill="#1e1e2e"/>
|
||||
<g xml:space="preserve" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" font-size="14">
|
||||
<text style="white-space:pre" x="12" y="26"><tspan fill="#6c7086"> 1 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Part of the Carbon Language project, under the Apache License v2.0 with LLVM</tspan></text>
|
||||
@@ -11,10 +11,12 @@
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-weight="bold">@dump-sem-ir-begin</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-weight="bold">@dump-sem-ir-end</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-weight="bold">@include-in-dumps</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic">@dump-sem-ir-</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic">no whitespace after double slash</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan><tspan fill="#94e2d5">/*</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">invalid</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">comment</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">pattern</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">*/</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic">/ invalid comment pattern.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Comment after a statement/expression/declaration.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Trailing, with no space before the introducer.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-weight="bold">@include-in-dumps</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic">@dump-sem-ir-begin with trailing text is an ordinary comment</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic">@dump-sem-ir-</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic">no whitespace after double slash</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#94e2d5">/*</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">invalid</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">comment</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">pattern</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">*/</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic">/ invalid comment pattern.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">C</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Comment after a statement/expression/declaration.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Trailing, with no space before the introducer.</tspan></text>
|
||||
</g></svg>
|
||||
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.6 KiB |
@@ -6,10 +6,10 @@
|
||||
<text style="white-space:pre" x="12" y="64"><tspan fill="#6c7086"> 3 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="83"><tspan fill="#6c7086"> 4 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="102"><tspan fill="#6c7086"> 5 </tspan><tspan fill="#cba6f7">package</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">SomePackage</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan><tspan fill="#f9e2af" font-weight="bold">Core</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">SomeCore</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan><tspan fill="#f9e2af" font-weight="bold">Core</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">SomeCore</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086"> 7 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#cba6f7">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">SomePackage</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#f38ba8">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">SomePackage</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan><tspan fill="#89b4fa">CallFunction</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">c</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">d</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan><tspan fill="#89b4fa">CallFunction</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">c</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">d</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#cdd6f4">unidentified</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
</g></svg>
|
||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
@@ -28,6 +28,7 @@ generic a: T = b;
|
||||
a: A in some_list;
|
||||
var a: T;
|
||||
let b: T;
|
||||
let unused c: T = d;
|
||||
binding: T;
|
||||
generic binding: T;
|
||||
var
|
||||
@@ -50,3 +51,17 @@ r#class
|
||||
r#if
|
||||
r#i32
|
||||
var r#var: i32 = r#class;
|
||||
|
||||
// --- member access through a pointer
|
||||
|
||||
p->field;
|
||||
p->Method(a);
|
||||
p->0;
|
||||
(*p).field;
|
||||
t.0.1;
|
||||
q.value()->size();
|
||||
|
||||
// --- builtin function definitions
|
||||
|
||||
fn Add(a: i32, b: i32) -> i32 = "int.sadd";
|
||||
fn Bits(n: IntLiteral) -> type = "int.make_type_signed";
|
||||
@@ -1,56 +1,71 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="1012" viewBox="0 0 721 1012">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="1297" viewBox="0 0 721 1297">
|
||||
<rect width="100%" height="100%" fill="#1e1e2e"/>
|
||||
<g xml:space="preserve" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" font-size="14">
|
||||
<text style="white-space:pre" x="12" y="26"><tspan fill="#6c7086"> 1 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Part of the Carbon Language project, under the Apache License v2.0 with LLVM</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="45"><tspan fill="#6c7086"> 2 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Exceptions. See /LICENSE for license information.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="64"><tspan fill="#6c7086"> 3 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="83"><tspan fill="#6c7086"> 4 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="102"><tspan fill="#6c7086"> 5 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">F</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">F1</tspan><tspan fill="#a6adc8">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086"> 7 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Func</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Generic</tspan><tspan fill="#a6adc8">[</tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">U</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#a6adc8">](</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">U</tspan><tspan fill="#a6adc8">) </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">U</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Lambda</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8">) </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">5</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="102"><tspan fill="#6c7086"> 5 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">F</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">F1</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086"> 7 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Func</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Generic</tspan><tspan fill="#74c7ec">[</tspan><tspan fill="#cdd6f4" font-style="italic">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">U</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec">](</tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">U</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">U</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Lambda</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">5</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan><tspan fill="#cba6f7">fn</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">MultiLine</tspan><tspan fill="#a6adc8">[</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C1</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C2</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan><tspan fill="#a6adc8"> ](</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">A</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">c</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Invalid</tspan><tspan fill="#a6adc8">#</tspan><tspan fill="#94e2d5">+?</tspan><tspan fill="#89b4fa">Name</tspan><tspan fill="#a6adc8">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#f9e2af">F</tspan><tspan fill="#a6adc8">)()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">MultiLine</tspan><tspan fill="#74c7ec">[</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">A</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">B</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C1</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">C</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C2</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">](</tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#74c7ec">),</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">c</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Invalid</tspan><tspan fill="#a6adc8">#</tspan><tspan fill="#94e2d5">+?</tspan><tspan fill="#89b4fa">Name</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#74c7ec">.(</tspan><tspan fill="#cdd6f4">I</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">F</tspan><tspan fill="#74c7ec">)()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="406"><tspan fill="#6c7086">21 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="425"><tspan fill="#6c7086">22 </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="444"><tspan fill="#6c7086">23 </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="482"><tspan fill="#6c7086">25 </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">array</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">5</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#cba6f7" font-style="italic">generic</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="520"><tspan fill="#6c7086">27 </tspan><tspan fill="#cba6f7" font-style="italic">generic</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">in</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">some_list</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="425"><tspan fill="#6c7086">22 </tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="444"><tspan fill="#6c7086">23 </tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="482"><tspan fill="#6c7086">25 </tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">array</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">5</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#cba6f7" font-style="italic">generic</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="520"><tspan fill="#6c7086">27 </tspan><tspan fill="#cba6f7" font-style="italic">generic</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">in</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">some_list</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="558"><tspan fill="#6c7086">29 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan><tspan fill="#cdd6f4">binding</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="615"><tspan fill="#6c7086">32 </tspan><tspan fill="#cba6f7" font-style="italic">generic</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">binding</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan><tspan fill="#cba6f7">var</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="653"><tspan fill="#6c7086">34 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">multiline</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="672"><tspan fill="#6c7086">35 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="691"><tspan fill="#6c7086">36 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">F</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#cba6f7" font-style="italic">ref</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">const</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">ref</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">F</tspan><tspan fill="#a6adc8">() </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">F</tspan><tspan fill="#a6adc8">() </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#f9e2af">U</tspan><tspan fill="#a6adc8"> { </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">val</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> }</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="748"><tspan fill="#6c7086">39 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">F</tspan><tspan fill="#a6adc8">() </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">val</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- lambdas and positional parameters</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="805"><tspan fill="#6c7086">42 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="824"><tspan fill="#6c7086">43 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">explicit</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8">) </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> { </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> }</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="843"><tspan fill="#6c7086">44 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">expression</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8">) </tspan><tspan fill="#94e2d5">=></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="862"><tspan fill="#6c7086">45 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">positional</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> { </tspan><tspan fill="#89b4fa">Print</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#cdd6f4" font-style="italic">$0</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">$1</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">$42</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> }</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="881"><tspan fill="#6c7086">46 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="900"><tspan fill="#6c7086">47 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- raw identifiers</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="919"><tspan fill="#6c7086">48 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="938"><tspan fill="#6c7086">49 </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">class</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="957"><tspan fill="#6c7086">50 </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">if</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="976"><tspan fill="#6c7086">51 </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">i32</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="995"><tspan fill="#6c7086">52 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">var</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">class</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold" font-style="italic">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">unused </tspan><tspan fill="#cdd6f4" font-weight="bold" font-style="italic">c</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">d</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="615"><tspan fill="#6c7086">32 </tspan><tspan fill="#cdd6f4" font-style="italic">binding</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan><tspan fill="#cba6f7" font-style="italic">generic</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">binding</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="653"><tspan fill="#6c7086">34 </tspan><tspan fill="#cba6f7">var</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="672"><tspan fill="#6c7086">35 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">multiline</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="691"><tspan fill="#6c7086">36 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">F</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cba6f7" font-style="italic">ref</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">const</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">ref</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">F</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="748"><tspan fill="#6c7086">39 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">F</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">T</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">U</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">val</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">F</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">val</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="805"><tspan fill="#6c7086">42 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- lambdas and positional parameters</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="824"><tspan fill="#6c7086">43 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="843"><tspan fill="#6c7086">44 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">explicit</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">}</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="862"><tspan fill="#6c7086">45 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">expression</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="881"><tspan fill="#6c7086">46 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">positional</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Print</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">$0</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">$1</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">$42</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">}</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="900"><tspan fill="#6c7086">47 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="919"><tspan fill="#6c7086">48 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- raw identifiers</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="938"><tspan fill="#6c7086">49 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="957"><tspan fill="#6c7086">50 </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">class</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="976"><tspan fill="#6c7086">51 </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">if</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="995"><tspan fill="#6c7086">52 </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">i32</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1014"><tspan fill="#6c7086">53 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">var</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-weight="bold" font-style="italic">r#</tspan><tspan fill="#cdd6f4">class</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1033"><tspan fill="#6c7086">54 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1052"><tspan fill="#6c7086">55 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- member access through a pointer</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1071"><tspan fill="#6c7086">56 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1090"><tspan fill="#6c7086">57 </tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec">-></tspan><tspan fill="#eba0ac" font-style="italic">field</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1109"><tspan fill="#6c7086">58 </tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec">-></tspan><tspan fill="#89b4fa" font-style="italic">Method</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1128"><tspan fill="#6c7086">59 </tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec">-></tspan><tspan fill="#fab387">0</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1147"><tspan fill="#6c7086">60 </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#94e2d5">*</tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec">).</tspan><tspan fill="#eba0ac" font-style="italic">field</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1166"><tspan fill="#6c7086">61 </tspan><tspan fill="#cdd6f4">t</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#fab387">0</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1185"><tspan fill="#6c7086">62 </tspan><tspan fill="#cdd6f4">q</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#89b4fa" font-style="italic">value</tspan><tspan fill="#74c7ec">()-></tspan><tspan fill="#89b4fa" font-style="italic">size</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1204"><tspan fill="#6c7086">63 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1223"><tspan fill="#6c7086">64 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- builtin function definitions</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1242"><tspan fill="#6c7086">65 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1261"><tspan fill="#6c7086">66 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Add</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#89b4fa" font-weight="bold" font-style="italic">int.sadd</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1280"><tspan fill="#6c7086">67 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Bits</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">n</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">IntLiteral</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#89b4fa" font-weight="bold" font-style="italic">int.make_type_signed</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
</g></svg>
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 25 KiB |
@@ -9,25 +9,25 @@
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> grammar highlights them as C++; these renderings come from the Carbon grammar</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086"> 7 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> alone, so that content shows plain.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#cba6f7">package</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">Sample</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">interop</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#cba6f7">package</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">Sample</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#f5e0dc" font-weight="bold">interop</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#cba6f7">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1"><cstdio></tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan><tspan fill="#cba6f7">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1"><string_view></tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#f38ba8">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#f5e0dc" font-weight="bold"><cstdio></tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan><tspan fill="#f38ba8">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#f5e0dc" font-weight="bold"><string_view></tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#cba6f7">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">inline</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan><tspan fill="#f5e0dc" font-style="italic">c++</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#f38ba8">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">inline</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan><tspan fill="#f5e0dc" font-style="italic">c++</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#a6adc8" font-style="italic">int FromImport() { return 1; }</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#cba6f7">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">inline</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6adc8" font-style="italic">int OneLiner() { return 2; }</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#f38ba8">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">inline</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6adc8" font-style="italic">int OneLiner() { return 2; }</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#cba6f7">inline</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="406"><tspan fill="#6c7086">21 </tspan><tspan fill="#a6adc8" font-style="italic">int FromBlock() { return 3; }</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="425"><tspan fill="#6c7086">22 </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="444"><tspan fill="#6c7086">23 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Uses</tspan><tspan fill="#a6adc8">() {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="482"><tspan fill="#6c7086">25 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">value</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">int</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">int</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">widened</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">size_t</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">value</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">size_t</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="520"><tspan fill="#6c7086">27 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">back</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">value</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">unsafe</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#89b4fa">printf</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">%d</tspan><tspan fill="#f5c2e7">\n</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">value</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="558"><tspan fill="#6c7086">29 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Uses</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="482"><tspan fill="#6c7086">25 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">value</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">int</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">int</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">widened</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">size_t</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">value</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">size_t</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="520"><tspan fill="#6c7086">27 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">back</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">value</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">unsafe</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#89b4fa" font-style="italic">printf</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">%d</tspan><tspan fill="#f5c2e7">\n</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">value</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="558"><tspan fill="#6c7086">29 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
</g></svg>
|
||||
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.9 KiB |
@@ -8,8 +8,8 @@
|
||||
<text style="white-space:pre" x="12" y="102"><tspan fill="#6c7086"> 5 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- operators</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086"> 7 </tspan><tspan fill="#94e2d5">>>=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5"><=></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5"><<=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">->?</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">&=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">^=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">:=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">:?</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">==</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">!=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">>=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">>></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5"><=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5"><></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5"><<</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5"><-</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">--</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">%=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">|=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">++</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">/=</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#94e2d5">*=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">~=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">&</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">@</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">^</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">!</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5"><</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">%</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">|</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">?</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">/</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">*</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">~</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">\</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#f38ba8">and</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">in</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">like</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">not</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">or</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">typeof</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">where</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#94e2d5">*=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">~=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">&</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">@</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">^</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">!</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5"><</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">%</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">|</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">?</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">/</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">*</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">~</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">\</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#f38ba8">and</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">in</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">like</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">not</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">or</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">typeof</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">where</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- special-keywords</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan></text>
|
||||
@@ -18,7 +18,7 @@
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- introducer-keywords</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#cba6f7">adapt</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">alias</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">choice</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">constraint</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">inline</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">interface</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#cba6f7">adapt</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">alias</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">choice</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">constraint</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">import</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">inline</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">interface</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#cba6f7">match_first</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">namespace</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">observe</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#cba6f7">base</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="406"><tspan fill="#6c7086">21 </tspan><tspan fill="#cba6f7">export</tspan></text>
|
||||
@@ -31,7 +31,7 @@
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#cba6f7" font-style="italic">private</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">protected</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">ref</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">runtime</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">static</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">template</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">unsafe</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">unused</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">val</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">virtual</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="558"><tspan fill="#6c7086">29 </tspan><tspan fill="#cba6f7" font-style="italic">base</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">class</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#cba6f7" font-style="italic">default</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan><tspan fill="#cba6f7" font-style="italic">export</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">import</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan><tspan fill="#cba6f7" font-style="italic">export</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">import</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="615"><tspan fill="#6c7086">32 </tspan><tspan fill="#cba6f7" font-style="italic">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan><tspan fill="#cba6f7" font-style="italic">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">library</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="653"><tspan fill="#6c7086">34 </tspan><tspan fill="#cba6f7" font-style="italic">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">package</tspan></text>
|
||||
@@ -40,8 +40,8 @@
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan><tspan fill="#94e2d5" font-style="italic">destroy</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">each</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">expand</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">forall</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">form</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">friend</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="748"><tspan fill="#6c7086">39 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">destroy</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan><tspan fill="#94e2d5">...</tspan><tspan fill="#94e2d5" font-style="italic">expand</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cba6f7">base</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan><tspan fill="#74c7ec">...</tspan><tspan fill="#94e2d5" font-style="italic">expand</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#94e2d5" font-style="italic">base</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="805"><tspan fill="#6c7086">42 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="824"><tspan fill="#6c7086">43 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- self-keywords</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="843"><tspan fill="#6c7086">44 </tspan></text>
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@@ -14,6 +14,12 @@
|
||||
'''py
|
||||
Block literal with a file type indicator.
|
||||
'''
|
||||
'''sql // A trailing comment on the introducer line.
|
||||
SELECT 1;
|
||||
'''
|
||||
''' // A comment with no file type indicator.
|
||||
Text.
|
||||
'''
|
||||
|
||||
#"a raw \n literal, where \#n is the escape"#
|
||||
##"nested "# stays inside, and \##n is the escape"##
|
||||
@@ -27,6 +33,7 @@
|
||||
|
||||
'a' '\n' '\0' '\u{1F600}'
|
||||
'\x70'
|
||||
"\x4F is an escape, \x4f is not"
|
||||
''
|
||||
'abcde'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="1316" viewBox="0 0 721 1316">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="1449" viewBox="0 0 721 1449">
|
||||
<rect width="100%" height="100%" fill="#1e1e2e"/>
|
||||
<g xml:space="preserve" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" font-size="14">
|
||||
<text style="white-space:pre" x="12" y="26"><tspan fill="#6c7086"> 1 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Part of the Carbon Language project, under the Apache License v2.0 with LLVM</tspan></text>
|
||||
@@ -17,56 +17,63 @@
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan><tspan fill="#f5e0dc" font-style="italic">py</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#a6e3a1" font-weight="bold"> Block literal with a file type indicator.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#74c7ec" font-style="italic">#"</tspan><tspan fill="#a6e3a1">a raw \n literal, where </tspan><tspan fill="#f5c2e7">\#n</tspan><tspan fill="#a6e3a1"> is the escape</tspan><tspan fill="#74c7ec" font-style="italic">"#</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#74c7ec" font-style="italic">##"</tspan><tspan fill="#a6e3a1">nested "# stays inside, and </tspan><tspan fill="#f5c2e7">\##n</tspan><tspan fill="#a6e3a1"> is the escape</tspan><tspan fill="#74c7ec" font-style="italic">"##</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#74c7ec" font-style="italic">#'''</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="406"><tspan fill="#6c7086">21 </tspan><tspan fill="#a6e3a1" font-weight="bold"> A raw block literal.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="425"><tspan fill="#6c7086">22 </tspan><tspan fill="#74c7ec" font-style="italic">'''#</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan><tspan fill="#f5e0dc" font-style="italic">sql</tspan><tspan fill="#a6e3a1" font-weight="bold"> </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> A trailing comment on the introducer line.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#a6e3a1" font-weight="bold"> SELECT 1;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan><tspan fill="#a6e3a1" font-weight="bold"> </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> A comment with no file type indicator.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="406"><tspan fill="#6c7086">21 </tspan><tspan fill="#a6e3a1" font-weight="bold"> Text.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="425"><tspan fill="#6c7086">22 </tspan><tspan fill="#74c7ec" font-style="italic">'''</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="444"><tspan fill="#6c7086">23 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">unterminated</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="482"><tspan fill="#6c7086">25 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- characters</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="520"><tspan fill="#6c7086">27 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6e3a1" font-style="italic">a</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#f5c2e7">\n</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#f5c2e7">\0</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#f5c2e7">\u{1F600}</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="558"><tspan fill="#6c7086">29 </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#f5c2e7">\x70</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#74c7ec" font-style="italic">''</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6e3a1" font-style="italic">abcde</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="615"><tspan fill="#6c7086">32 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- true-false</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="653"><tspan fill="#6c7086">34 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="672"><tspan fill="#6c7086">35 </tspan><tspan fill="#cba6f7" font-weight="bold">true</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-weight="bold">false</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="691"><tspan fill="#6c7086">36 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- type-literals</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="748"><tspan fill="#6c7086">39 </tspan><tspan fill="#f9e2af" font-style="italic">array</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">bool</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">char</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">str</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan><tspan fill="#f9e2af" font-style="italic">i8</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i16</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i64</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i128</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i10</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan><tspan fill="#f9e2af" font-style="italic">u8</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u16</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u64</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u128</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u11</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="805"><tspan fill="#6c7086">42 </tspan><tspan fill="#f9e2af" font-style="italic">f8</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f16</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f64</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f128</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f12</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan><tspan fill="#74c7ec" font-style="italic">#"</tspan><tspan fill="#a6e3a1">a raw \n literal, where </tspan><tspan fill="#f5c2e7">\#n</tspan><tspan fill="#a6e3a1"> is the escape</tspan><tspan fill="#74c7ec" font-style="italic">"#</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="482"><tspan fill="#6c7086">25 </tspan><tspan fill="#74c7ec" font-style="italic">##"</tspan><tspan fill="#a6e3a1">nested "# stays inside, and </tspan><tspan fill="#f5c2e7">\##n</tspan><tspan fill="#a6e3a1"> is the escape</tspan><tspan fill="#74c7ec" font-style="italic">"##</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#74c7ec" font-style="italic">#'''</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="520"><tspan fill="#6c7086">27 </tspan><tspan fill="#a6e3a1" font-weight="bold"> A raw block literal.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#74c7ec" font-style="italic">'''#</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="558"><tspan fill="#6c7086">29 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">unterminated</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="615"><tspan fill="#6c7086">32 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- characters</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="653"><tspan fill="#6c7086">34 </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6e3a1" font-style="italic">a</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#f5c2e7">\n</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#f5c2e7">\0</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#f5c2e7">\u{1F600}</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="672"><tspan fill="#6c7086">35 </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#f5c2e7">\x70</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="691"><tspan fill="#6c7086">36 </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#f5c2e7">\x4F</tspan><tspan fill="#a6e3a1"> is an escape, \x4f is not</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan><tspan fill="#74c7ec" font-style="italic">''</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan><tspan fill="#74c7ec" font-style="italic">'</tspan><tspan fill="#a6e3a1" font-style="italic">abcde</tspan><tspan fill="#74c7ec" font-style="italic">'</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="748"><tspan fill="#6c7086">39 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- true-false</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="805"><tspan fill="#6c7086">42 </tspan><tspan fill="#cba6f7" font-weight="bold">true</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-weight="bold">false</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="824"><tspan fill="#6c7086">43 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="843"><tspan fill="#6c7086">44 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- numbers</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="843"><tspan fill="#6c7086">44 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- type-literals</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="862"><tspan fill="#6c7086">45 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="881"><tspan fill="#6c7086">46 </tspan><tspan fill="#fab387">12345</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">6789</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">00012345</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="900"><tspan fill="#6c7086">47 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="919"><tspan fill="#6c7086">48 </tspan><tspan fill="#fab387">1234.56789</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="938"><tspan fill="#6c7086">49 </tspan><tspan fill="#fab387">0.875</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="957"><tspan fill="#6c7086">50 </tspan><tspan fill="#fab387">0.3e5</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="976"><tspan fill="#6c7086">51 </tspan><tspan fill="#fab387">1e5</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="995"><tspan fill="#6c7086">52 </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#fab387">123</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1014"><tspan fill="#6c7086">53 </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#fab387">1e3</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="881"><tspan fill="#6c7086">46 </tspan><tspan fill="#f9e2af" font-style="italic">array</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">bool</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">char</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">str</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="900"><tspan fill="#6c7086">47 </tspan><tspan fill="#f9e2af" font-style="italic">i8</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i16</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i64</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i128</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i10</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="919"><tspan fill="#6c7086">48 </tspan><tspan fill="#f9e2af" font-style="italic">u8</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u16</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u64</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u128</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">u11</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="938"><tspan fill="#6c7086">49 </tspan><tspan fill="#f9e2af" font-style="italic">f8</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f16</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f64</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f128</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">f12</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="957"><tspan fill="#6c7086">50 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="976"><tspan fill="#6c7086">51 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- numbers</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="995"><tspan fill="#6c7086">52 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1014"><tspan fill="#6c7086">53 </tspan><tspan fill="#fab387">12345</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">6789</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">00012345</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1033"><tspan fill="#6c7086">54 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1052"><tspan fill="#6c7086">55 </tspan><tspan fill="#fab387" font-weight="bold" font-style="italic">0o755</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1071"><tspan fill="#6c7086">56 </tspan><tspan fill="#fab387" font-weight="bold" font-style="italic">0o_17</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1090"><tspan fill="#6c7086">57 </tspan><tspan fill="#fab387" font-weight="bold" font-style="italic">0o</tspan><tspan fill="#a6adc8">8</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1109"><tspan fill="#6c7086">58 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1128"><tspan fill="#6c7086">59 </tspan><tspan fill="#fab387" font-weight="bold">0b1011_0010</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1147"><tspan fill="#6c7086">60 </tspan><tspan fill="#fab387" font-weight="bold">0b_010</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1166"><tspan fill="#6c7086">61 </tspan><tspan fill="#fab387" font-weight="bold">0b</tspan><tspan fill="#a6adc8">2345</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1185"><tspan fill="#6c7086">62 </tspan><tspan fill="#fab387">0</tspan><tspan fill="#a6adc8">B011</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1204"><tspan fill="#6c7086">63 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1223"><tspan fill="#6c7086">64 </tspan><tspan fill="#fab387" font-style="italic">0x2AE5</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1242"><tspan fill="#6c7086">65 </tspan><tspan fill="#fab387" font-style="italic">0x_F109</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1261"><tspan fill="#6c7086">66 </tspan><tspan fill="#fab387" font-style="italic">0xD8_E2.5F_7Bp8</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1280"><tspan fill="#6c7086">67 </tspan><tspan fill="#fab387" font-style="italic">0xabcdef.abcdef</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1299"><tspan fill="#6c7086">68 </tspan><tspan fill="#fab387">0</tspan><tspan fill="#a6adc8">XA85CE</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1052"><tspan fill="#6c7086">55 </tspan><tspan fill="#fab387">1234.56789</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1071"><tspan fill="#6c7086">56 </tspan><tspan fill="#fab387">0.875</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1090"><tspan fill="#6c7086">57 </tspan><tspan fill="#fab387">0.3e5</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1109"><tspan fill="#6c7086">58 </tspan><tspan fill="#fab387">1e5</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1128"><tspan fill="#6c7086">59 </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#fab387">123</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1147"><tspan fill="#6c7086">60 </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#fab387">1e3</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1166"><tspan fill="#6c7086">61 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1185"><tspan fill="#6c7086">62 </tspan><tspan fill="#94e2d5" font-style="italic">0o</tspan><tspan fill="#fab387" font-weight="bold" font-style="italic">755</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1204"><tspan fill="#6c7086">63 </tspan><tspan fill="#94e2d5" font-style="italic">0o</tspan><tspan fill="#fab387" font-weight="bold" font-style="italic">_17</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1223"><tspan fill="#6c7086">64 </tspan><tspan fill="#94e2d5" font-style="italic">0o</tspan><tspan fill="#fab387" font-weight="bold" font-style="italic">8</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1242"><tspan fill="#6c7086">65 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1261"><tspan fill="#6c7086">66 </tspan><tspan fill="#94e2d5" font-style="italic">0b</tspan><tspan fill="#fab387" font-weight="bold">1011_0010</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1280"><tspan fill="#6c7086">67 </tspan><tspan fill="#94e2d5" font-style="italic">0b</tspan><tspan fill="#fab387" font-weight="bold">_010</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1299"><tspan fill="#6c7086">68 </tspan><tspan fill="#94e2d5" font-style="italic">0b</tspan><tspan fill="#fab387" font-weight="bold">2345</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1318"><tspan fill="#6c7086">69 </tspan><tspan fill="#fab387">0B011</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1337"><tspan fill="#6c7086">70 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1356"><tspan fill="#6c7086">71 </tspan><tspan fill="#94e2d5" font-style="italic">0x</tspan><tspan fill="#fab387" font-style="italic">2AE5</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1375"><tspan fill="#6c7086">72 </tspan><tspan fill="#94e2d5" font-style="italic">0x</tspan><tspan fill="#fab387" font-style="italic">_F109</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1394"><tspan fill="#6c7086">73 </tspan><tspan fill="#94e2d5" font-style="italic">0x</tspan><tspan fill="#fab387" font-style="italic">D8_E2.5F_7Bp8</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1413"><tspan fill="#6c7086">74 </tspan><tspan fill="#94e2d5" font-style="italic">0x</tspan><tspan fill="#fab387" font-style="italic">abcdef.abcdef</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1432"><tspan fill="#6c7086">75 </tspan><tspan fill="#fab387">0XA85CE</tspan></text>
|
||||
</g></svg>
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 15 KiB |
@@ -9,42 +9,42 @@
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086"> 7 </tspan><tspan fill="#cba6f7">package</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">Carbon</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#cba6f7">interface</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">HasValueParam</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">V</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#a6adc8">) {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Go</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#cdd6f4" font-weight="bold">self</tspan><tspan fill="#a6adc8">) </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#cba6f7">interface</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">HasValueParam</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">V</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Go</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-weight="bold">self</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> () </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">HasValueParam</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">5</tspan><tspan fill="#a6adc8">) {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Go</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#cdd6f4" font-weight="bold">self</tspan><tspan fill="#a6adc8">) </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> { </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">42</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> }</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">HasValueParam</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">5</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Go</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-weight="bold">self</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">42</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Point</tspan><tspan fill="#a6adc8"> {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Origin</tspan><tspan fill="#a6adc8">() </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#a6adc8"> {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> {</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">0</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">y</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">0</tspan><tspan fill="#a6adc8">}</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#a6adc8"> }</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">Point</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Origin</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{.</tspan><tspan fill="#eba0ac" font-style="italic">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">0</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">y</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">0</tspan><tspan fill="#74c7ec">}</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="406"><tspan fill="#6c7086">21 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="425"><tspan fill="#6c7086">22 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="444"><tspan fill="#6c7086">23 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">y</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="482"><tspan fill="#6c7086">25 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Procedure</tspan><tspan fill="#a6adc8">() </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Procedure</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="520"><tspan fill="#6c7086">27 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">returned</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">zoop</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">0</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">while</tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#89b4fa">DoSomeJob</tspan><tspan fill="#a6adc8">()) {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">while</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#89b4fa">DoSomeJob</tspan><tspan fill="#74c7ec">())</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="558"><tspan fill="#6c7086">29 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">zoop</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">+=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#a6adc8"> }</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="615"><tspan fill="#6c7086">32 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="653"><tspan fill="#6c7086">34 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="672"><tspan fill="#6c7086">35 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Main</tspan><tspan fill="#a6adc8">() </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="672"><tspan fill="#6c7086">35 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Main</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="691"><tspan fill="#6c7086">36 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">str</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">Hello world</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">hex</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387" font-style="italic">0xABCDEF1234567890</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">bin</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387" font-weight="bold">0b0000111001010010</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">hex</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">0x</tspan><tspan fill="#fab387" font-style="italic">ABCDEF1234567890</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">bin</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">0b</tspan><tspan fill="#fab387" font-weight="bold">0000111001010010</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="748"><tspan fill="#6c7086">39 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">dec</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">123456789012345678</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">big</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Core</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#89b4fa">Int</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#fab387">1024</tspan><tspan fill="#a6adc8">) </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1234</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="805"><tspan fill="#6c7086">42 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">aaa</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">Carbon</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="824"><tspan fill="#6c7086">43 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">view</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">str</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">Carbon</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold" font-style="italic">big</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Core</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">Int</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#fab387">1024</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1234</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="805"><tspan fill="#6c7086">42 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold" font-style="italic">aaa</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">auto</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">Carbon</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="824"><tspan fill="#6c7086">43 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold" font-style="italic">view</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">str</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#a6e3a1">Carbon</tspan><tspan fill="#74c7ec" font-style="italic">"</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="843"><tspan fill="#6c7086">44 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="862"><tspan fill="#6c7086">45 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Procedure</tspan><tspan fill="#a6adc8">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="881"><tspan fill="#6c7086">46 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="862"><tspan fill="#6c7086">45 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">return</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Procedure</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="881"><tspan fill="#6c7086">46 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
</g></svg>
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
@@ -30,6 +30,7 @@ interface I;
|
||||
impl C as (I(A, B, C.(D.E(F, G)).H)) {}
|
||||
impl C as I where .A = (B where .Self = {}) {}
|
||||
impl C as I where .A = {} and .B = C {}
|
||||
impl forall [T: I where .A = i32] T as J where .B = T.A {}
|
||||
impl Self as I;
|
||||
impl as I;
|
||||
|
||||
@@ -39,3 +40,40 @@ constraint Constraint {
|
||||
require impls I;
|
||||
extern require impls I;
|
||||
}
|
||||
|
||||
namespace N;
|
||||
|
||||
class N.C1 {
|
||||
fn N.C1.Make() -> Self;
|
||||
}
|
||||
alias N.A = N.C1;
|
||||
fn N.C1.Other();
|
||||
class Outer(T: type).Inner(U: type) {}
|
||||
fn Outer(T: type).Inner(U: type).F[self: Self](x: T) -> U;
|
||||
fn N.Base(N.T).Member() {}
|
||||
interface N.I2;
|
||||
constraint N.C2 {}
|
||||
|
||||
class C6 {
|
||||
fn destroy(ref self);
|
||||
}
|
||||
fn C6.destroy(ref self) {}
|
||||
|
||||
var p: C6* = &c6;
|
||||
var q: typeof(p) = p;
|
||||
var r: typeof(Make(p, (q))).Pointee = *p;
|
||||
|
||||
// --- the same names in type and expression positions
|
||||
|
||||
var o: Optional(Slice(i32)) = Optional(Slice(i32)).None();
|
||||
let origin: Point = Point.Origin();
|
||||
let t: type = Point;
|
||||
var c: Core.Int(64) = x as Core.Int(64);
|
||||
var v: Cpp.std.vector(i32) = Make(i32, Vector(Point));
|
||||
var s: {.x: i32, .y: Point} = {.x = 1, .y = p};
|
||||
var tup: (i32, Point) = (1, p);
|
||||
fn Pick[T: Hashable & Eq where .Key = i32](t: T) -> T.Key;
|
||||
fn Iter() -> Vector(T).Iterator;
|
||||
if (T == Point and x impls Hashable) {}
|
||||
alias lower = i32;
|
||||
var l: lower = a * b;
|
||||
@@ -1,45 +1,83 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="803" viewBox="0 0 721 803">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="1525" viewBox="0 0 721 1525">
|
||||
<rect width="100%" height="100%" fill="#1e1e2e"/>
|
||||
<g xml:space="preserve" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" font-size="14">
|
||||
<text style="white-space:pre" x="12" y="26"><tspan fill="#6c7086"> 1 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Part of the Carbon Language project, under the Apache License v2.0 with LLVM</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="45"><tspan fill="#6c7086"> 2 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> Exceptions. See /LICENSE for license information.</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="64"><tspan fill="#6c7086"> 3 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="83"><tspan fill="#6c7086"> 4 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="102"><tspan fill="#6c7086"> 5 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C2</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">T1</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T2</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C1</tspan><tspan fill="#a6adc8">) {}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086"> 7 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C3</tspan><tspan fill="#a6adc8"> {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">extend</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">base</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="102"><tspan fill="#6c7086"> 5 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">C1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="121"><tspan fill="#6c7086"> 6 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">C2</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">T1</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">T2</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C1</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="140"><tspan fill="#6c7086"> 7 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">C3</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="159"><tspan fill="#6c7086"> 8 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">extend</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">base</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">C1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="178"><tspan fill="#6c7086"> 9 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="197"><tspan fill="#6c7086">10 </tspan><tspan fill="#cba6f7">class</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#89b4fa">C4</tspan><tspan fill="#a6adc8">(</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#f9e2af">T1</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#a6adc8">)</tspan><tspan fill="#74c7ec">,</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T2</tspan><tspan fill="#94e2d5">:</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#89b4fa">B</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">E</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">F</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">G</tspan><tspan fill="#a6adc8">))</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8">)</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#f9e2af">D</tspan><tspan fill="#a6adc8">))) </tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="216"><tspan fill="#6c7086">11 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#89b4fa">C4</tspan><tspan fill="#74c7ec">(</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="235"><tspan fill="#6c7086">12 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">T1</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">),</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="254"><tspan fill="#6c7086">13 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-style="italic">T2</tspan><tspan fill="#94e2d5">:</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="273"><tspan fill="#6c7086">14 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">A</tspan><tspan fill="#74c7ec">.(</tspan><tspan fill="#89b4fa">B</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">E</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">F</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">G</tspan><tspan fill="#74c7ec">)).</tspan><tspan fill="#eba0ac" font-style="italic">C</tspan><tspan fill="#74c7ec">)</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="292"><tspan fill="#6c7086">15 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">D</tspan><tspan fill="#74c7ec">)))</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="311"><tspan fill="#6c7086">16 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C5</tspan><tspan fill="#a6adc8"> {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">extend</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="330"><tspan fill="#6c7086">17 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">C5</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="349"><tspan fill="#6c7086">18 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="368"><tspan fill="#6c7086">19 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">extend</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="387"><tspan fill="#6c7086">20 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="406"><tspan fill="#6c7086">21 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="425"><tspan fill="#6c7086">22 </tspan><tspan fill="#cba6f7">alias</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">a1</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="425"><tspan fill="#6c7086">22 </tspan><tspan fill="#cba6f7">alias</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">a1</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">C1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="444"><tspan fill="#6c7086">23 </tspan><tspan fill="#cba6f7">alias</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">a2</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="463"><tspan fill="#6c7086">24 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="482"><tspan fill="#6c7086">25 </tspan><tspan fill="#cba6f7">adapt</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">SomeClass</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#cba6f7">adapt</tspan><tspan fill="#a6adc8"> {</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">SomeClass</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#a6adc8">}</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="501"><tspan fill="#6c7086">26 </tspan><tspan fill="#cba6f7">adapt</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{.</tspan><tspan fill="#eba0ac" font-style="italic">a</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">SomeClass</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">b</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">}</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="520"><tspan fill="#6c7086">27 </tspan><tspan fill="#cba6f7">adapt</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="539"><tspan fill="#6c7086">28 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="558"><tspan fill="#6c7086">29 </tspan><tspan fill="#cba6f7">interface</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#89b4fa">I</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">D</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#89b4fa">E</tspan><tspan fill="#a6adc8">(</tspan><tspan fill="#f9e2af">F</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">G</tspan><tspan fill="#a6adc8">))</tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#f9e2af">H</tspan><tspan fill="#a6adc8">)) {}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> (</tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> {}) {}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="615"><tspan fill="#6c7086">32 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> {} </tspan><tspan fill="#f38ba8">and</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">.</tspan><tspan fill="#f9e2af">B</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8"> {}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="653"><tspan fill="#6c7086">34 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="672"><tspan fill="#6c7086">35 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="691"><tspan fill="#6c7086">36 </tspan><tspan fill="#cba6f7">constraint</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Constraint</tspan><tspan fill="#a6adc8"> {</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="748"><tspan fill="#6c7086">39 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">extern</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan><tspan fill="#a6adc8">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="577"><tspan fill="#6c7086">30 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">A</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">B</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">C</tspan><tspan fill="#74c7ec">.(</tspan><tspan fill="#cdd6f4">D</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#89b4fa" font-style="italic">E</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">F</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">G</tspan><tspan fill="#74c7ec">)).</tspan><tspan fill="#eba0ac" font-style="italic">H</tspan><tspan fill="#74c7ec">))</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="596"><tspan fill="#6c7086">31 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">B</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{})</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="615"><tspan fill="#6c7086">32 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">and</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">B</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">C</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="634"><tspan fill="#6c7086">33 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">forall</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">[</tspan><tspan fill="#cdd6f4" font-style="italic">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">I</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">]</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">J</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">B</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">T</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="653"><tspan fill="#6c7086">34 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="672"><tspan fill="#6c7086">35 </tspan><tspan fill="#cba6f7">impl</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="691"><tspan fill="#6c7086">36 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="710"><tspan fill="#6c7086">37 </tspan><tspan fill="#cba6f7">constraint</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Constraint</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="729"><tspan fill="#6c7086">38 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="748"><tspan fill="#6c7086">39 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="767"><tspan fill="#6c7086">40 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="786"><tspan fill="#6c7086">41 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7" font-style="italic">extern</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">require</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">I</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="805"><tspan fill="#6c7086">42 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="824"><tspan fill="#6c7086">43 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="843"><tspan fill="#6c7086">44 </tspan><tspan fill="#cba6f7">namespace</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc">N</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="862"><tspan fill="#6c7086">45 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="881"><tspan fill="#6c7086">46 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">C1</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="900"><tspan fill="#6c7086">47 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">C1</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#89b4fa" font-weight="bold">Make</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="919"><tspan fill="#6c7086">48 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="938"><tspan fill="#6c7086">49 </tspan><tspan fill="#cba6f7">alias</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">A</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">C1</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="957"><tspan fill="#6c7086">50 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">C1</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#89b4fa" font-weight="bold">Other</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="976"><tspan fill="#6c7086">51 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">Outer</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">).</tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">Inner</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">U</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="995"><tspan fill="#6c7086">52 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">Outer</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">).</tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">Inner</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4" font-style="italic">U</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#74c7ec">).</tspan><tspan fill="#89b4fa" font-weight="bold">F</tspan><tspan fill="#74c7ec">[</tspan><tspan fill="#cdd6f4" font-weight="bold">self</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">Self</tspan><tspan fill="#74c7ec">](</tspan><tspan fill="#cdd6f4" font-style="italic">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">U</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1014"><tspan fill="#6c7086">53 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">Base</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">).</tspan><tspan fill="#89b4fa" font-weight="bold">Member</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1033"><tspan fill="#6c7086">54 </tspan><tspan fill="#cba6f7">interface</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">I2</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1052"><tspan fill="#6c7086">55 </tspan><tspan fill="#cba6f7">constraint</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">N</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">C2</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1071"><tspan fill="#6c7086">56 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1090"><tspan fill="#6c7086">57 </tspan><tspan fill="#cba6f7">class</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold" font-style="italic">C6</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1109"><tspan fill="#6c7086">58 </tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">destroy</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cba6f7" font-style="italic">ref</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">self</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1128"><tspan fill="#6c7086">59 </tspan><tspan fill="#74c7ec">}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1147"><tspan fill="#6c7086">60 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">C6</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#94e2d5" font-style="italic">destroy</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cba6f7" font-style="italic">ref</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold">self</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1166"><tspan fill="#6c7086">61 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1185"><tspan fill="#6c7086">62 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">C6</tspan><tspan fill="#94e2d5" font-weight="bold">*</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">&</tspan><tspan fill="#cdd6f4">c6</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1204"><tspan fill="#6c7086">63 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">q</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">typeof</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1223"><tspan fill="#6c7086">64 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">r</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">typeof</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#89b4fa">Make</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">q</tspan><tspan fill="#74c7ec">))).</tspan><tspan fill="#f9e2af">Pointee</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">*</tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1242"><tspan fill="#6c7086">65 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1261"><tspan fill="#6c7086">66 </tspan><tspan fill="#7f849c">//</tspan><tspan fill="#7f849c" font-style="italic"> --- the same names in type and expression positions</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1280"><tspan fill="#6c7086">67 </tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1299"><tspan fill="#6c7086">68 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">o</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Optional</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af">Slice</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">))</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Optional</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#89b4fa">Slice</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">)).</tspan><tspan fill="#89b4fa" font-style="italic">None</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1318"><tspan fill="#6c7086">69 </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold" font-style="italic">origin</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Point</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">Point</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#89b4fa" font-style="italic">Origin</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1337"><tspan fill="#6c7086">70 </tspan><tspan fill="#cba6f7">let</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4" font-weight="bold" font-style="italic">t</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">type</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">Point</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1356"><tspan fill="#6c7086">71 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">c</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Core</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">Int</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#fab387">64</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">as</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Core</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">Int</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#fab387">64</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1375"><tspan fill="#6c7086">72 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">v</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-weight="bold">Cpp</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">std</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">vector</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Make</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa">Vector</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">Point</tspan><tspan fill="#74c7ec">))</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1394"><tspan fill="#6c7086">73 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">s</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{.</tspan><tspan fill="#eba0ac" font-style="italic">x</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">y</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Point</tspan><tspan fill="#74c7ec">}</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{.</tspan><tspan fill="#eba0ac" font-style="italic">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">y</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec">}</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1413"><tspan fill="#6c7086">74 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">tup</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Point</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#fab387">1</tspan><tspan fill="#74c7ec">,</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">p</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1432"><tspan fill="#6c7086">75 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Pick</tspan><tspan fill="#74c7ec">[</tspan><tspan fill="#cdd6f4" font-style="italic">T</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Hashable</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">&</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">Eq</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5" font-style="italic">where</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#eba0ac" font-style="italic">Key</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec">](</tspan><tspan fill="#cdd6f4" font-style="italic">t</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">T</tspan><tspan fill="#74c7ec">.</tspan><tspan fill="#f9e2af">Key</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1451"><tspan fill="#6c7086">76 </tspan><tspan fill="#cba6f7">fn</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#89b4fa" font-weight="bold">Iter</tspan><tspan fill="#74c7ec">()</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">-></tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f5e0dc" font-weight="bold" font-style="italic">Vector</tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#f9e2af">T</tspan><tspan fill="#74c7ec">).</tspan><tspan fill="#f9e2af">Iterator</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1470"><tspan fill="#6c7086">77 </tspan><tspan fill="#f38ba8">if</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">(</tspan><tspan fill="#cdd6f4">T</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">==</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">Point</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f38ba8">and</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">x</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">impls</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" text-decoration="underline">Hashable</tspan><tspan fill="#74c7ec">)</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#74c7ec">{}</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1489"><tspan fill="#6c7086">78 </tspan><tspan fill="#cba6f7">alias</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">lower</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af" font-style="italic">i32</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
<text style="white-space:pre" x="12" y="1508"><tspan fill="#6c7086">79 </tspan><tspan fill="#cba6f7">var</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">l</tspan><tspan fill="#94e2d5">:</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#f9e2af">lower</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">=</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">a</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#94e2d5">*</tspan><tspan fill="#a6adc8"> </tspan><tspan fill="#cdd6f4">b</tspan><tspan fill="#74c7ec" font-weight="bold">;</tspan></text>
|
||||
</g></svg>
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 35 KiB |
@@ -36,10 +36,12 @@ _GRAMMAR_PATH = (
|
||||
)
|
||||
|
||||
# A theme built for this grammar rather than taken from an editor. Each family
|
||||
# of related scopes gets one color, and bold and italic distinguish the scopes
|
||||
# within a family, so every scope the grammar emits renders differently and a
|
||||
# change to what it scopes is visible in the rendering. A scope with no entry of
|
||||
# its own takes its family's. The colors are Catppuccin Mocha's.
|
||||
# of related scopes gets one color, and bold, italic, and underline distinguish
|
||||
# the scopes within a family. Every scope the grammar picks from context renders
|
||||
# differently, so a change to what it scopes is visible in the rendering. Scopes
|
||||
# that follow from the spelling alone, such as a bracket's shape, can share a
|
||||
# rendering, since the text already shows them. A scope with no entry of its own
|
||||
# takes its family's. The colors are Catppuccin Mocha's.
|
||||
_COLORS = {
|
||||
"comment": "#7f849c",
|
||||
"punctuation.definition.comment": "#7f849c",
|
||||
@@ -53,10 +55,17 @@ _COLORS = {
|
||||
"entity.name.type": "#f9e2af",
|
||||
"support.type": "#f9e2af",
|
||||
"support.class": "#f9e2af",
|
||||
"entity.other.inherited-class": "#f9e2af",
|
||||
"entity.name.namespace": "#f5e0dc",
|
||||
"entity.name.scope-resolution": "#f5e0dc",
|
||||
"entity.name.tag": "#f5e0dc",
|
||||
"entity.name.function": "#89b4fa",
|
||||
"support.function": "#89b4fa",
|
||||
"variable": "#cdd6f4",
|
||||
# Members of something else: a field or other member read through `.` or
|
||||
# `->`, and a choice's alternatives.
|
||||
"variable.other.property": "#eba0ac",
|
||||
"variable.other.enummember": "#eba0ac",
|
||||
"string": "#a6e3a1",
|
||||
"constant.character.escape": "#f5c2e7",
|
||||
"constant.numeric": "#fab387",
|
||||
@@ -76,14 +85,25 @@ _STYLES = {
|
||||
"storage.modifier": "italic",
|
||||
"constant.language": "bold",
|
||||
"keyword.other": "italic",
|
||||
"keyword.operator.type.pointer": "bold",
|
||||
"punctuation.terminator": "bold",
|
||||
"punctuation.definition.string": "italic",
|
||||
"punctuation.definition.raw-identifier": "bold italic",
|
||||
"support.type": "italic",
|
||||
"support.class": "bold",
|
||||
"entity.name.type.class": "bold italic",
|
||||
"entity.other.inherited-class": "underline",
|
||||
"entity.name.namespace.library": "bold",
|
||||
"entity.name.scope-resolution": "bold italic",
|
||||
"entity.name.tag": "italic",
|
||||
"entity.name.function.definition": "bold",
|
||||
"entity.name.function.member": "italic",
|
||||
"support.function": "bold italic",
|
||||
"variable.parameter": "italic",
|
||||
"variable.language": "bold",
|
||||
"variable.other.constant": "bold italic",
|
||||
"variable.other.property": "italic",
|
||||
"variable.other.enummember": "bold",
|
||||
"string.quoted.single": "italic",
|
||||
"string.quoted.triple": "bold",
|
||||
"constant.character.escape": "",
|
||||
|
||||
@@ -234,30 +234,42 @@ def _append_capture_tokens(
|
||||
group's text takes on top of `scopes`; group `"0"` is the whole match. The
|
||||
tokens tile the match with no gaps: text not covered by a listed group is
|
||||
still appended, under `scopes` alone.
|
||||
|
||||
Groups nest, so the scopes do too: text inside `((//)(@x))` carries the
|
||||
scope of group 1 and then the scope of whichever of 2 and 3 covers it.
|
||||
Enclosing groups have the lower number, which is what puts them lower in
|
||||
the stack.
|
||||
"""
|
||||
if not captures:
|
||||
_append_token(tokens, linenum, match.start(), match.end(), scopes)
|
||||
return
|
||||
pos = match.start()
|
||||
spans = []
|
||||
for group in range((match.re.groups or 0) + 1):
|
||||
spec = captures.get(str(group))
|
||||
# Skip a group the grammar does not name, one that did not
|
||||
# participate in the match (`start` is then -1), and one that lies
|
||||
# behind text already appended, since tokens come out in order.
|
||||
if spec is None or match.start(group) < pos:
|
||||
start, end = match.span(group)
|
||||
# Skip a group the grammar does not name, one that did not participate
|
||||
# in the match, whose `start` is then -1, and one that matched empty.
|
||||
if spec is None or start < 0 or start == end:
|
||||
continue
|
||||
if match.start(group) == match.end(group):
|
||||
continue
|
||||
_append_token(tokens, linenum, pos, match.start(group), scopes)
|
||||
spans.append((start, end, spec["name"]))
|
||||
edges = sorted(
|
||||
{match.start(), match.end()}.union(
|
||||
point for start, end, _ in spans for point in (start, end)
|
||||
)
|
||||
)
|
||||
for start, end in zip(edges, edges[1:]):
|
||||
_append_token(
|
||||
tokens,
|
||||
linenum,
|
||||
match.start(group),
|
||||
match.end(group),
|
||||
scopes + [spec["name"]],
|
||||
start,
|
||||
end,
|
||||
scopes
|
||||
+ [
|
||||
name
|
||||
for span_start, span_end, name in spans
|
||||
if span_start <= start and end <= span_end
|
||||
],
|
||||
)
|
||||
pos = match.end(group)
|
||||
_append_token(tokens, linenum, pos, match.end(), scopes)
|
||||
|
||||
|
||||
def _push_scope(
|
||||
|
||||
@@ -10,7 +10,11 @@
|
||||
{ "include": "#comments" },
|
||||
{ "include": "#cpp-inline" },
|
||||
{ "include": "#strings" },
|
||||
{ "include": "#builtin-functions" },
|
||||
{ "include": "#choice-definitions" },
|
||||
{ "include": "#declarations" },
|
||||
{ "include": "#inheritance" },
|
||||
{ "include": "#type-annotation" },
|
||||
{ "include": "#keywords" },
|
||||
{ "include": "#literals" },
|
||||
{ "include": "#numbers" },
|
||||
@@ -22,12 +26,12 @@
|
||||
"comments": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Toolchain directives, which are comments the driver acts on.",
|
||||
"name": "comment.line.double-slash.carbon",
|
||||
"match": "(//)(@(?:dump-sem-ir-(?:begin|end)|include-in-dumps))\\b.*$",
|
||||
"comment": "Toolchain directives. The comment scope sits on a capture rather than on the rule, to leave the leading indentation outside it.",
|
||||
"match": "^\\s*((//)(@(?:dump-sem-ir-(?:begin|end)|include-in-dumps)))$",
|
||||
"captures": {
|
||||
"1": { "name": "punctuation.definition.comment.carbon" },
|
||||
"2": { "name": "keyword.other.directive.carbon" }
|
||||
"1": { "name": "comment.line.double-slash.carbon" },
|
||||
"2": { "name": "punctuation.definition.comment.carbon" },
|
||||
"3": { "name": "keyword.other.directive.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -43,20 +47,22 @@
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Inline C++, block form.",
|
||||
"begin": "\\b(?:(import)\\s+(Cpp)\\s+(inline)|(inline)\\s+(Cpp))\\s*(''')([^\\s'\\\"#]*)",
|
||||
"begin": "\\b(?:(import)\\s+(Cpp)\\s+(inline)|(inline)\\s+(Cpp))\\s*(''')([^\\s'\\\"#]*)(?:[ \\t]*((//)(?:[ \\t][^\\n]*)?)$)?",
|
||||
"end": "(''')\\s*(;)?",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "storage.type.carbon" },
|
||||
"1": { "name": "keyword.control.import.carbon" },
|
||||
"2": { "name": "support.class.carbon" },
|
||||
"3": { "name": "storage.type.carbon" },
|
||||
"4": { "name": "storage.type.carbon" },
|
||||
"5": { "name": "support.class.carbon" },
|
||||
"6": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"7": { "name": "entity.name.tag.language.carbon" }
|
||||
"7": { "name": "entity.name.tag.language.carbon" },
|
||||
"8": { "name": "comment.line.double-slash.carbon" },
|
||||
"9": { "name": "punctuation.definition.comment.carbon" }
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.end.carbon" },
|
||||
"2": { "name": "punctuation.terminator.carbon" }
|
||||
"2": { "name": "punctuation.terminator.statement.carbon" }
|
||||
},
|
||||
"contentName": "meta.embedded.block.cpp",
|
||||
"patterns": [{ "include": "source.cpp" }]
|
||||
@@ -66,7 +72,7 @@
|
||||
"begin": "\\b(?:(import)\\s+(Cpp)\\s+(inline)|(inline)\\s+(Cpp))\\s*(\")",
|
||||
"end": "(\")\\s*(;)?",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "storage.type.carbon" },
|
||||
"1": { "name": "keyword.control.import.carbon" },
|
||||
"2": { "name": "support.class.carbon" },
|
||||
"3": { "name": "storage.type.carbon" },
|
||||
"4": { "name": "storage.type.carbon" },
|
||||
@@ -75,7 +81,7 @@
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.end.carbon" },
|
||||
"2": { "name": "punctuation.terminator.carbon" }
|
||||
"2": { "name": "punctuation.terminator.statement.carbon" }
|
||||
},
|
||||
"contentName": "meta.embedded.inline.cpp",
|
||||
"patterns": [{ "include": "source.cpp" }]
|
||||
@@ -87,12 +93,14 @@
|
||||
{
|
||||
"comment": "Block string literal, with an optional file type indicator, raw at `###` level.",
|
||||
"name": "string.quoted.triple.carbon",
|
||||
"begin": "(#{3,})(''')([^\\s'\\\"#]*)",
|
||||
"begin": "(#{3,})(''')([^\\s'\\\"#]*)(?:[ \\t]*((//)(?:[ \\t][^\\n]*)?)$)?",
|
||||
"end": "(''')\\1",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"2": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"3": { "name": "entity.name.tag.language.carbon" }
|
||||
"3": { "name": "entity.name.tag.language.carbon" },
|
||||
"4": { "name": "comment.line.double-slash.carbon" },
|
||||
"5": { "name": "punctuation.definition.comment.carbon" }
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.end.carbon" }
|
||||
@@ -102,12 +110,14 @@
|
||||
{
|
||||
"comment": "Block string literal, with an optional file type indicator, raw at `##` level.",
|
||||
"name": "string.quoted.triple.carbon",
|
||||
"begin": "(##)(''')([^\\s'\\\"#]*)",
|
||||
"begin": "(##)(''')([^\\s'\\\"#]*)(?:[ \\t]*((//)(?:[ \\t][^\\n]*)?)$)?",
|
||||
"end": "('''##)",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"2": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"3": { "name": "entity.name.tag.language.carbon" }
|
||||
"3": { "name": "entity.name.tag.language.carbon" },
|
||||
"4": { "name": "comment.line.double-slash.carbon" },
|
||||
"5": { "name": "punctuation.definition.comment.carbon" }
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.end.carbon" }
|
||||
@@ -117,12 +127,14 @@
|
||||
{
|
||||
"comment": "Block string literal, with an optional file type indicator, raw at `#` level.",
|
||||
"name": "string.quoted.triple.carbon",
|
||||
"begin": "(#)(''')([^\\s'\\\"#]*)",
|
||||
"begin": "(#)(''')([^\\s'\\\"#]*)(?:[ \\t]*((//)(?:[ \\t][^\\n]*)?)$)?",
|
||||
"end": "('''#)",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"2": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"3": { "name": "entity.name.tag.language.carbon" }
|
||||
"3": { "name": "entity.name.tag.language.carbon" },
|
||||
"4": { "name": "comment.line.double-slash.carbon" },
|
||||
"5": { "name": "punctuation.definition.comment.carbon" }
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.end.carbon" }
|
||||
@@ -132,11 +144,13 @@
|
||||
{
|
||||
"comment": "Block string literal, with an optional file type indicator.",
|
||||
"name": "string.quoted.triple.carbon",
|
||||
"begin": "(''')([^\\s'\\\"#]*)",
|
||||
"begin": "(''')([^\\s'\\\"#]*)(?:[ \\t]*((//)(?:[ \\t][^\\n]*)?)$)?",
|
||||
"end": "(''')",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"2": { "name": "entity.name.tag.language.carbon" }
|
||||
"2": { "name": "entity.name.tag.language.carbon" },
|
||||
"3": { "name": "comment.line.double-slash.carbon" },
|
||||
"4": { "name": "punctuation.definition.comment.carbon" }
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.end.carbon" }
|
||||
@@ -146,11 +160,13 @@
|
||||
{
|
||||
"comment": "A `\"\"\"` block is always an error, but highlighting it as a block string keeps the rest of the file readable.",
|
||||
"name": "string.quoted.triple.carbon",
|
||||
"begin": "(\"\"\")([^\\s'\\\"#]*)",
|
||||
"begin": "(\"\"\")([^\\s'\\\"#]*)(?:[ \\t]*((//)(?:[ \\t][^\\n]*)?)$)?",
|
||||
"end": "(\"\"\")",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"2": { "name": "entity.name.tag.language.carbon" }
|
||||
"2": { "name": "entity.name.tag.language.carbon" },
|
||||
"3": { "name": "comment.line.double-slash.carbon" },
|
||||
"4": { "name": "punctuation.definition.comment.carbon" }
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": { "name": "punctuation.definition.string.end.carbon" }
|
||||
@@ -231,7 +247,7 @@
|
||||
"patterns": [
|
||||
{
|
||||
"name": "constant.character.escape.carbon",
|
||||
"match": "\\\\(?:[tnr0'\\\"\\\\]|x[0-9A-Fa-f]{2}|u\\{[0-9A-Fa-f]+\\})"
|
||||
"match": "\\\\(?:[tnr0'\\\"\\\\]|x[0-9A-F]{2}|u\\{[0-9A-F]+\\})"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -239,7 +255,7 @@
|
||||
"patterns": [
|
||||
{
|
||||
"name": "constant.character.escape.carbon",
|
||||
"match": "\\\\#(?:[tnr0'\\\"\\\\]|x[0-9A-Fa-f]{2}|u\\{[0-9A-Fa-f]+\\})"
|
||||
"match": "\\\\#(?:[tnr0'\\\"\\\\]|x[0-9A-F]{2}|u\\{[0-9A-F]+\\})"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -247,7 +263,7 @@
|
||||
"patterns": [
|
||||
{
|
||||
"name": "constant.character.escape.carbon",
|
||||
"match": "\\\\##(?:[tnr0'\\\"\\\\]|x[0-9A-Fa-f]{2}|u\\{[0-9A-Fa-f]+\\})"
|
||||
"match": "\\\\##(?:[tnr0'\\\"\\\\]|x[0-9A-F]{2}|u\\{[0-9A-F]+\\})"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -255,46 +271,383 @@
|
||||
"patterns": [
|
||||
{
|
||||
"name": "constant.character.escape.carbon",
|
||||
"match": "\\\\#{3,}(?:[tnr0'\\\"\\\\]|x[0-9A-Fa-f]{2}|u\\{[0-9A-Fa-f]+\\})"
|
||||
"match": "\\\\#{3,}(?:[tnr0'\\\"\\\\]|x[0-9A-F]{2}|u\\{[0-9A-F]+\\})"
|
||||
}
|
||||
]
|
||||
},
|
||||
"builtin-functions": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "A builtin function declaration (`fn ... = \"...\"`), scoping the string contents as `support.function.builtin`.",
|
||||
"begin": "\\b(fn)\\b(?=[^\"/;]*=\\s*\")",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "storage.type.carbon" }
|
||||
},
|
||||
"end": "(?=;)|$",
|
||||
"patterns": [
|
||||
{
|
||||
"match": "(=)\\s*((\")([^\"\\\\\\n]*)(\"))",
|
||||
"captures": {
|
||||
"1": { "name": "keyword.operator.carbon" },
|
||||
"2": { "name": "string.quoted.double.carbon" },
|
||||
"3": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"4": { "name": "support.function.builtin.carbon" },
|
||||
"5": { "name": "punctuation.definition.string.end.carbon" }
|
||||
}
|
||||
},
|
||||
{ "include": "#declarations" },
|
||||
{ "include": "#comments" },
|
||||
{ "include": "#strings" },
|
||||
{ "include": "#type-annotation" },
|
||||
{ "include": "#keywords" },
|
||||
{ "include": "#literals" },
|
||||
{ "include": "#numbers" },
|
||||
{ "include": "#operators" },
|
||||
{ "include": "#identifiers" },
|
||||
{ "include": "#punctuation" }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"declarations": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Function declarations, including lambdas with a name. `destroy` is a keyword naming a destructor, not a name.",
|
||||
"match": "\\b(fn)\\s+(?!destroy\\b)((?:r#)?[A-Za-z_][A-Za-z0-9_]*)",
|
||||
"comment": "The name a function declaration declares, after any qualifiers, or the `destroy` keyword.",
|
||||
"begin": "(?<=\\bfn)\\s+(?=(?:r#)?[A-Za-z_])",
|
||||
"end": "(?:(destroy)|((?:r#)?[A-Za-z_][A-Za-z0-9_]*))\\b(?!\\s*(?:\\[[^\\[\\]]*\\]\\s*)?(?:\\([^()]*(?:\\([^()]*(?:\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*)?\\.)|(?=[^\\sA-Za-z_])|$",
|
||||
"endCaptures": {
|
||||
"1": { "name": "keyword.other.carbon" },
|
||||
"2": { "name": "entity.name.function.definition.carbon" }
|
||||
},
|
||||
"patterns": [{ "include": "#declared-name-qualifier" }]
|
||||
},
|
||||
{
|
||||
"comment": "The name a class declaration declares, given `entity.name.type.class` for themes that color classes apart from other types.",
|
||||
"begin": "(?<=\\bclass)\\s+(?=(?:r#)?[A-Za-z_])",
|
||||
"end": "((?:r#)?[A-Za-z_][A-Za-z0-9_]*)\\b(?!\\s*(?:\\[[^\\[\\]]*\\]\\s*)?(?:\\([^()]*(?:\\([^()]*(?:\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*)?\\.)|(?=[^\\sA-Za-z_])|$",
|
||||
"endCaptures": {
|
||||
"1": { "name": "entity.name.type.class.carbon" }
|
||||
},
|
||||
"patterns": [{ "include": "#declared-name-qualifier" }]
|
||||
},
|
||||
{
|
||||
"comment": "The name the other nominal type declarations declare.",
|
||||
"begin": "(?:(?<=\\balias)|(?<=\\bconstraint)|(?<=\\binterface))\\s+(?=(?:r#)?[A-Za-z_])",
|
||||
"end": "((?:r#)?[A-Za-z_][A-Za-z0-9_]*)\\b(?!\\s*(?:\\[[^\\[\\]]*\\]\\s*)?(?:\\([^()]*(?:\\([^()]*(?:\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*)?\\.)|(?=[^\\sA-Za-z_])|$",
|
||||
"endCaptures": {
|
||||
"1": { "name": "entity.name.type.carbon" }
|
||||
},
|
||||
"patterns": [{ "include": "#declared-name-qualifier" }]
|
||||
},
|
||||
{
|
||||
"comment": "`let` and `var` bindings, with optional modifiers before the name. `_` and `self` are left to `#literals`.",
|
||||
"match": "\\b(let)\\s+((?:(?:generic|ref|template|unused|var)\\s+)*)(?!_\\s*:)(r#)?([A-Za-z_][A-Za-z0-9_]*)(?=\\s*:(?![=!?]))",
|
||||
"captures": {
|
||||
"1": { "name": "storage.type.carbon" },
|
||||
"2": { "name": "entity.name.function.carbon" }
|
||||
"2": { "name": "storage.modifier.carbon" },
|
||||
"3": { "name": "punctuation.definition.raw-identifier.carbon" },
|
||||
"4": { "name": "variable.other.constant.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Nominal type declarations.",
|
||||
"match": "\\b(alias|choice|class|constraint|interface)\\s+((?:r#)?[A-Za-z_][A-Za-z0-9_]*)",
|
||||
"match": "\\b(var)\\s+((?:(?:generic|ref|template|unused)\\s+)*)(?!(?:_|self)\\s*:)(r#)?([A-Za-z_][A-Za-z0-9_]*)(?=\\s*:(?![=!?]))",
|
||||
"captures": {
|
||||
"1": { "name": "storage.type.carbon" },
|
||||
"2": { "name": "entity.name.type.carbon" }
|
||||
"2": { "name": "storage.modifier.carbon" },
|
||||
"3": { "name": "punctuation.definition.raw-identifier.carbon" },
|
||||
"4": { "name": "variable.other.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Package, namespace, and import names. `library` and `inline` are keywords that may follow `import`, not names.",
|
||||
"match": "\\b(package|namespace|import)\\s+(?!(?:library|inline)\\b)((?:r#)?[A-Za-z_][A-Za-z0-9_]*)",
|
||||
"comment": "Package, namespace, and import names, excluding keywords (`library`, `inline`) and `Core` and `Cpp`.",
|
||||
"match": "\\b(import)\\s+(?!(?:library|inline|Core|Cpp)\\b)((?:r#)?[A-Za-z_][A-Za-z0-9_]*)",
|
||||
"captures": {
|
||||
"1": { "name": "keyword.control.import.carbon" },
|
||||
"2": { "name": "entity.name.namespace.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"match": "\\b(package|namespace)\\s+(?!(?:library|Core|Cpp)\\b)((?:r#)?[A-Za-z_][A-Za-z0-9_]*)",
|
||||
"captures": {
|
||||
"1": { "name": "storage.type.carbon" },
|
||||
"2": { "name": "entity.name.namespace.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "A library name, written as a string, with `entity.name.namespace.library` nested inside the string scope.",
|
||||
"match": "\\b(library)\\s+((\")((?:\\\\.|[^\"\\\\\\n])*)(\"))",
|
||||
"captures": {
|
||||
"1": { "name": "storage.type.carbon" },
|
||||
"2": { "name": "string.quoted.double.carbon" },
|
||||
"3": { "name": "punctuation.definition.string.begin.carbon" },
|
||||
"4": { "name": "entity.name.namespace.library.carbon" },
|
||||
"5": { "name": "punctuation.definition.string.end.carbon" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"declared-name-qualifier": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "One qualifier on a declared name, such as `N.` or `Base(T: type).`, matched when followed by `.` after any parameter lists. `entity.name.scope-resolution` is nested inside `entity.name.type` so themes without a scope-resolution rule fall back to the type color.",
|
||||
"begin": "(((?:r#)?[A-Za-z_][A-Za-z0-9_]*))\\b(?=\\s*(?:\\[[^\\[\\]]*\\]\\s*)?(?:\\([^()]*(?:\\([^()]*(?:\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*)?\\.)",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "entity.name.type.carbon" },
|
||||
"2": { "name": "entity.name.scope-resolution.carbon" }
|
||||
},
|
||||
"end": "(\\.)",
|
||||
"endCaptures": {
|
||||
"1": { "name": "punctuation.separator.dot-access.carbon" }
|
||||
},
|
||||
"patterns": [{ "include": "#type-body" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
"type-annotation": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "A type expression, from the token that introduces it to the first token that cannot continue one.",
|
||||
"name": "meta.type.annotation.carbon",
|
||||
"begin": "(:!)|(:\\?)|(:(?![=!?]))|((?<![A-Za-z0-9_)\\]}])\\->\\?)|((?<![A-Za-z0-9_)\\]}])\\->(?!\\?))|\\b(as)\\b|\\b(adapt)\\b|\\b(require)\\b",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "keyword.operator.type.annotation.symbolic.carbon" },
|
||||
"2": { "name": "keyword.operator.type.annotation.form.carbon" },
|
||||
"3": { "name": "keyword.operator.type.annotation.carbon" },
|
||||
"4": { "name": "keyword.operator.function-result.form.carbon" },
|
||||
"5": { "name": "keyword.operator.function-result.carbon" },
|
||||
"6": { "name": "keyword.operator.expression.as.carbon" },
|
||||
"7": { "name": "storage.type.carbon" },
|
||||
"8": { "name": "storage.type.carbon" }
|
||||
},
|
||||
"end": "(?=[,;={}\\)\\]]|[-+/%!<>|^~?@\\\\]|//|\\b(?:in|and|or|not|as|impls)\\b|$)",
|
||||
"patterns": [{ "include": "#type-body" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
"type-body": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Argument and grouping parentheses, which nest rather than ending the type.",
|
||||
"begin": "\\(",
|
||||
"end": "(\\))|$",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.parens.begin.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.parens.end.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [{ "include": "#type-body" }]
|
||||
},
|
||||
{
|
||||
"begin": "\\[",
|
||||
"end": "(\\])|$",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.brackets.begin.bracket.square.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.brackets.end.bracket.square.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [{ "include": "#type-body" }]
|
||||
},
|
||||
{
|
||||
"comment": "A `where` clause switches to expression scoping so `=` does not end the enclosing type as an initializer, and ends at a `)` or `]` it did not open.",
|
||||
"begin": "\\bwhere\\b",
|
||||
"beginCaptures": {
|
||||
"0": { "name": "keyword.other.where.carbon" }
|
||||
},
|
||||
"end": "(?=[;{}\\)\\]]|$)",
|
||||
"patterns": [
|
||||
{ "include": "#expression-parens" },
|
||||
{ "include": "$self" }
|
||||
]
|
||||
},
|
||||
{ "include": "#impls-clause" },
|
||||
{ "include": "#comments" },
|
||||
{ "include": "#strings" },
|
||||
{
|
||||
"comment": "`typeof` takes an expression operand, switching out of `#type-body`.",
|
||||
"begin": "\\b(typeof)\\s*(\\()",
|
||||
"end": "(\\))|$",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "keyword.operator.expression.typeof.carbon" },
|
||||
"2": {
|
||||
"name": "punctuation.section.parens.begin.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.parens.end.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{ "include": "#expression-parens" },
|
||||
{ "include": "$self" }
|
||||
]
|
||||
},
|
||||
{ "include": "#keywords" },
|
||||
{ "include": "#literals" },
|
||||
{ "include": "#numbers" },
|
||||
{
|
||||
"comment": "Pointer `*`, written directly after the pointee type.",
|
||||
"name": "keyword.operator.type.pointer.carbon",
|
||||
"match": "(?<=[A-Za-z0-9_)\\]*])\\*(?!=)"
|
||||
},
|
||||
{ "include": "#operators" },
|
||||
{ "include": "#bindings" },
|
||||
{
|
||||
"comment": "A qualifier in a type, which `#declared-name-qualifier` scopes the same way on a declared name.",
|
||||
"name": "entity.name.type.carbon",
|
||||
"match": "(?:(?<=[A-Za-z0-9_)\\]]\\.)|(?<!\\.))\\b((?:r#)?[A-Za-z_][A-Za-z0-9_]*)\\b(?=\\s*(?:\\[[^\\[\\]]*\\]\\s*)?(?:\\([^()]*(?:\\([^()]*(?:\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*)?\\.)",
|
||||
"captures": {
|
||||
"1": { "name": "entity.name.scope-resolution.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"comment": "Unqualified names and qualified member names in a type context. A `.` with no preceding qualifier (such as a struct field `.x`) is left to `#identifiers`.",
|
||||
"name": "entity.name.type.carbon",
|
||||
"match": "(?:(?<=[A-Za-z0-9_)\\]]\\.)|(?<!\\.))\\b(r#)?[A-Za-z_][A-Za-z0-9_]*\\b",
|
||||
"captures": {
|
||||
"1": { "name": "punctuation.definition.raw-identifier.carbon" }
|
||||
}
|
||||
},
|
||||
{ "include": "#identifiers" },
|
||||
{ "include": "#punctuation" }
|
||||
]
|
||||
},
|
||||
"inheritance": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "An `impl` declaration (when `impl` does not precede another declaration keyword), scoping the type before `as` with `#type-body` and the interface after `as` with `#inheritance-body`.",
|
||||
"begin": "\\b(impl)\\b(?!\\s*(?:adapt|alias|base|choice|class|constraint|export|fn|impl|import|interface|let|library|match_first|namespace|observe|package|require|var)\\b)",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "storage.type.carbon" }
|
||||
},
|
||||
"end": "(?=[;{]|$)",
|
||||
"patterns": [
|
||||
{
|
||||
"name": "meta.inheritance-clause.carbon",
|
||||
"begin": "\\b(as)\\b",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "keyword.operator.expression.as.carbon" }
|
||||
},
|
||||
"end": "(?=[,;={}\\)\\]]|[-+/%!<>|^~?@\\\\]|//|\\b(?:in|and|or|not|as|impls)\\b|$)",
|
||||
"patterns": [{ "include": "#inheritance-body" }]
|
||||
},
|
||||
{ "include": "#type-body" }
|
||||
],
|
||||
"name": "meta.type.annotation.carbon"
|
||||
},
|
||||
{
|
||||
"comment": "A `base:` declaration, excluding `.base` member access and `base class`.",
|
||||
"name": "meta.inheritance-clause.carbon",
|
||||
"begin": "(?<!\\.)\\b(base)\\s*(:)(?![=!?])",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "storage.type.carbon" },
|
||||
"2": { "name": "keyword.operator.type.annotation.carbon" }
|
||||
},
|
||||
"end": "(?=[,;={}\\)\\]]|[-+/%!<>|^~?@\\\\]|//|\\b(?:in|and|or|not|as|impls)\\b|$)",
|
||||
"patterns": [{ "include": "#inheritance-body" }]
|
||||
},
|
||||
{ "include": "#impls-clause" }
|
||||
]
|
||||
},
|
||||
"impls-clause": {
|
||||
"patterns": [
|
||||
{
|
||||
"name": "meta.inheritance-clause.carbon",
|
||||
"begin": "\\b(impls)\\b",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "keyword.operator.expression.impls.carbon" }
|
||||
},
|
||||
"end": "(?=[,;={}\\)\\]]|[-+/%!<>|^~?@\\\\]|//|\\b(?:in|and|or|not|as|impls)\\b|$)",
|
||||
"patterns": [{ "include": "#inheritance-body" }]
|
||||
}
|
||||
]
|
||||
},
|
||||
"inheritance-body": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Only the interface itself is scoped as `entity.other.inherited-class`; its argument list switches to expression scoping.",
|
||||
"begin": "(?<=[A-Za-z0-9_\\]])\\(",
|
||||
"end": "(\\))|$",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.parens.begin.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.parens.end.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{ "include": "#expression-parens" },
|
||||
{ "include": "$self" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"comment": "Grouping parentheses around an interface name stay in `#inheritance-body`.",
|
||||
"begin": "\\(",
|
||||
"end": "(\\))|$",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.parens.begin.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.parens.end.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [{ "include": "#inheritance-body" }]
|
||||
},
|
||||
{
|
||||
"comment": "A `where` clause switches to expression scoping and ends at a `)` or `]` it did not open.",
|
||||
"begin": "\\b(where)\\b",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "keyword.other.where.carbon" }
|
||||
},
|
||||
"end": "(?=[;{}\\)\\]]|$)",
|
||||
"patterns": [
|
||||
{ "include": "#expression-parens" },
|
||||
{ "include": "$self" }
|
||||
]
|
||||
},
|
||||
{ "include": "#keywords" },
|
||||
{ "include": "#literals" },
|
||||
{
|
||||
"comment": "The final identifier of the interface or base class name; any preceding qualifiers fall through to `#type-body`.",
|
||||
"name": "entity.other.inherited-class.carbon",
|
||||
"match": "\\b(?:r#)?[A-Za-z_][A-Za-z0-9_]*\\b(?!\\s*\\.)"
|
||||
},
|
||||
{ "include": "#type-body" }
|
||||
]
|
||||
},
|
||||
"keywords": {
|
||||
"patterns": [
|
||||
{
|
||||
"name": "storage.type.carbon",
|
||||
"match": "\\b(adapt|alias|choice|class|constraint|fn|import|inline|interface|let|library|match_first|namespace|observe|require|var)\\b"
|
||||
"comment": "`.base` member access, matched before `base` as an introducer.",
|
||||
"name": "keyword.other.base.carbon",
|
||||
"match": "(?<=\\.)\\b(base)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "`base` introduces a base class declaration unless it modifies one.",
|
||||
"name": "keyword.control.import.carbon",
|
||||
"match": "\\b(import)\\b"
|
||||
},
|
||||
{
|
||||
"name": "storage.type.carbon",
|
||||
"match": "\\b(adapt|alias|choice|class|constraint|fn|inline|interface|let|library|match_first|namespace|observe|require|var)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "`base` as an introducer (not `base class`).",
|
||||
"name": "storage.type.carbon",
|
||||
"match": "\\b(base)\\b(?!\\s*class\\b)"
|
||||
},
|
||||
@@ -304,10 +657,10 @@
|
||||
},
|
||||
{
|
||||
"name": "storage.type.carbon",
|
||||
"match": "\\b(impl)\\b(?!\\s*(fn|library|package)\\b)"
|
||||
"match": "\\b(impl)\\b(?!\\s*(adapt|alias|base|choice|class|constraint|export|fn|impl|import|interface|let|library|match_first|namespace|observe|package|require|var)\\b)"
|
||||
},
|
||||
{
|
||||
"comment": "`package` is an introducer unless it begins a qualified name.",
|
||||
"comment": "`package` as an introducer (not `package.`).",
|
||||
"name": "storage.type.carbon",
|
||||
"match": "\\b(package)\\b(?!\\.)"
|
||||
},
|
||||
@@ -316,7 +669,7 @@
|
||||
"match": "\\b(abstract|const|eval|extend|extern|final|generic|musteval|override|partial|private|protected|ref|runtime|static|template|unsafe|unused|val|virtual)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "`default` is a declaration modifier unless it opens a match arm.",
|
||||
"comment": "`default` as a modifier (not `default =>`).",
|
||||
"name": "storage.modifier.carbon",
|
||||
"match": "\\b(default)\\b(?!\\s*=>)"
|
||||
},
|
||||
@@ -330,29 +683,50 @@
|
||||
},
|
||||
{
|
||||
"name": "storage.modifier.carbon",
|
||||
"match": "\\b(impl)\\b(?=\\s*(fn|library|package)\\b)"
|
||||
"match": "\\b(impl)\\b(?=\\s*(adapt|alias|base|choice|class|constraint|export|fn|impl|import|interface|let|library|match_first|namespace|observe|package|require|var)\\b)"
|
||||
},
|
||||
{
|
||||
"name": "keyword.control.carbon",
|
||||
"match": "\\b(break|case|continue|else|for|if|match|return|returned|then|while)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "`default` is a match arm here, and a declaration modifier elsewhere.",
|
||||
"comment": "`default` in a `match` clause.",
|
||||
"name": "keyword.control.carbon",
|
||||
"match": "\\b(default)\\b(?=\\s*=>)"
|
||||
},
|
||||
{
|
||||
"name": "keyword.control.carbon",
|
||||
"match": "\\b(and|as|impls|in|like|not|or|typeof|where)\\b"
|
||||
"match": "\\b(and|or)\\b"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.expression.not.carbon",
|
||||
"match": "\\b(not)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "Fallback when not matched by `#type-annotation` or `#inheritance`.",
|
||||
"name": "keyword.operator.expression.as.carbon",
|
||||
"match": "\\b(as)\\b"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.expression.impls.carbon",
|
||||
"match": "\\b(impls)\\b"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.expression.in.carbon",
|
||||
"match": "\\b(in)\\b"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.expression.like.carbon",
|
||||
"match": "\\b(like)\\b"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.expression.typeof.carbon",
|
||||
"match": "\\b(typeof)\\b"
|
||||
},
|
||||
{ "name": "keyword.other.where.carbon", "match": "\\b(where)\\b" },
|
||||
{
|
||||
"name": "keyword.other.carbon",
|
||||
"match": "\\b(destroy|each|expand|forall|form|friend)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "`.base` names the base class subobject.",
|
||||
"name": "keyword.other.carbon",
|
||||
"match": "(?<=\\.)\\b(base)\\b"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -365,23 +739,27 @@
|
||||
"match": "\\b(_)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "Language-provided package roots.",
|
||||
"comment": "Built-in package names.",
|
||||
"name": "support.class.carbon",
|
||||
"match": "\\b(Core|Cpp)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "`package` as a qualified-name root names the current package.",
|
||||
"comment": "`package` as a qualifier.",
|
||||
"name": "variable.language.carbon",
|
||||
"match": "\\b(package)\\b(?=\\.)"
|
||||
},
|
||||
{ "name": "constant.language.carbon", "match": "\\b(true|false)\\b" },
|
||||
{
|
||||
"name": "support.type.builtin.carbon",
|
||||
"match": "\\b(array|auto|bool|char|str|type)\\b"
|
||||
"match": "\\b(array|auto|type)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "Integer and float type literals. The lexer accepts any width, so this must not be restricted to the common ones.",
|
||||
"name": "support.type.builtin.carbon",
|
||||
"name": "support.type.primitive.carbon",
|
||||
"match": "\\b(bool|char|str)\\b"
|
||||
},
|
||||
{
|
||||
"comment": "Integer and floating-point type literals.",
|
||||
"name": "support.type.primitive.carbon",
|
||||
"match": "\\b[iuf][1-9][0-9]*\\b"
|
||||
}
|
||||
]
|
||||
@@ -389,14 +767,41 @@
|
||||
"numbers": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Each numeric rule matches a full alphanumeric word starting with a digit so a malformed suffix is not split into an identifier. Real literals exclude a leading `.` or `->` so tuple access like `t.0.1` is not matched as a real.",
|
||||
"name": "constant.numeric.hex.carbon",
|
||||
"match": "\\b0x[_0-9A-Fa-f]*(?:\\.[_0-9A-Fa-f]*)?(?:[pP][-+]?[0-9]+)?"
|
||||
"match": "(?<!\\.)(?<!->)\\b(0x)[_0-9A-Za-z]*\\.[0-9A-Za-z][_0-9A-Za-z]*(?:(?<=[a-z])[-+][0-9A-Za-z][_0-9A-Za-z]*)?",
|
||||
"captures": {
|
||||
"1": { "name": "keyword.other.unit.hexadecimal.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "constant.numeric.hex.carbon",
|
||||
"match": "\\b(0x)[_0-9A-Za-z]*",
|
||||
"captures": {
|
||||
"1": { "name": "keyword.other.unit.hexadecimal.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "constant.numeric.octal.carbon",
|
||||
"match": "\\b(0o)[_0-9A-Za-z]*",
|
||||
"captures": {
|
||||
"1": { "name": "keyword.other.unit.octal.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "constant.numeric.binary.carbon",
|
||||
"match": "\\b(0b)[_0-9A-Za-z]*",
|
||||
"captures": {
|
||||
"1": { "name": "keyword.other.unit.binary.carbon" }
|
||||
}
|
||||
},
|
||||
{ "name": "constant.numeric.octal.carbon", "match": "\\b0o[_0-7]*" },
|
||||
{ "name": "constant.numeric.binary.carbon", "match": "\\b0b[_01]*" },
|
||||
{
|
||||
"name": "constant.numeric.decimal.carbon",
|
||||
"match": "\\b[0-9][_0-9]*(?:\\.[_0-9]+)?(?:[eE][-+]?[0-9]+)?"
|
||||
"match": "(?<!\\.)(?<!->)\\b[0-9][_0-9A-Za-z]*\\.[0-9A-Za-z][_0-9A-Za-z]*(?:(?<=[a-z])[-+][0-9A-Za-z][_0-9A-Za-z]*)?"
|
||||
},
|
||||
{
|
||||
"name": "constant.numeric.decimal.carbon",
|
||||
"match": "\\b[0-9][_0-9A-Za-z]*"
|
||||
},
|
||||
{
|
||||
"comment": "Positional parameter, as used in lambdas.",
|
||||
@@ -407,50 +812,247 @@
|
||||
},
|
||||
"operators": {
|
||||
"patterns": [
|
||||
{
|
||||
"name": "keyword.operator.type.annotation.symbolic.carbon",
|
||||
"match": ":!"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.type.annotation.form.carbon",
|
||||
"match": ":\\?"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.type.annotation.carbon",
|
||||
"match": ":(?![=!?])"
|
||||
},
|
||||
{
|
||||
"comment": "`->` directly after an operand is pointer member access rather than a return type arrow.",
|
||||
"name": "punctuation.separator.pointer-access.carbon",
|
||||
"match": "(?<=[A-Za-z0-9_)\\]}])\\->(?!\\?)"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.function-result.form.carbon",
|
||||
"match": "\\->\\?"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.function-result.carbon",
|
||||
"match": "\\->(?!\\?)"
|
||||
},
|
||||
{ "name": "keyword.operator.arrow.fat.carbon", "match": "=>" },
|
||||
{
|
||||
"name": "keyword.operator.carbon",
|
||||
"match": "(\\->\\?|>>=|<=>|<<=|\\&=|\\^=|:=|:\\?|==|=>|!=|>=|>>|<=|<>|<<|<\\-|\\-=|\\->|\\-\\-|%=|\\|=|\\+=|\\+\\+|/=|\\*=|\\~=|\\&|@|\\^|:|=|!|>|<|\\-|%|\\.|\\||\\+|\\?|/|\\*|\\~|\\\\)"
|
||||
"match": "<=>|<<=|>>=|==|!=|<=|>=|<<|>>|\\+\\+|--|\\+=|-=|\\*=|/=|%=|&=|\\|=|\\^=|~=|:=|<-|<>|[-+*/%&|^~!<>=@?\\\\]"
|
||||
}
|
||||
]
|
||||
},
|
||||
"identifiers": {
|
||||
"patterns": [
|
||||
{ "include": "#bindings" },
|
||||
{
|
||||
"comment": "Raw identifiers, which suppress keyword meaning.",
|
||||
"match": "\\b(r#)([A-Z][A-Za-z0-9_]*)",
|
||||
"comment": "Raw identifiers.",
|
||||
"name": "variable.other.carbon",
|
||||
"match": "\\b(r#)([A-Za-z_][A-Za-z0-9_]*)",
|
||||
"captures": {
|
||||
"1": { "name": "punctuation.definition.raw-identifier.carbon" },
|
||||
"2": { "name": "entity.name.type.carbon" }
|
||||
"1": { "name": "punctuation.definition.raw-identifier.carbon" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"match": "\\b(r#)([a-z_][A-Za-z0-9_]*)",
|
||||
"captures": {
|
||||
"1": { "name": "punctuation.definition.raw-identifier.carbon" },
|
||||
"2": { "name": "variable.other.carbon" }
|
||||
}
|
||||
"comment": "Member function call.",
|
||||
"name": "entity.name.function.member.carbon",
|
||||
"match": "(?:(?<=\\.)|(?<=\\->))[A-Za-z_][A-Za-z0-9_]*(?=\\s*\\()"
|
||||
},
|
||||
{
|
||||
"comment": "An identifier applied to an argument list is a call.",
|
||||
"name": "entity.name.function.carbon",
|
||||
"comment": "Member access via `.` or `->`.",
|
||||
"name": "variable.other.property.carbon",
|
||||
"match": "(?:(?<=\\.)|(?<=\\->))[A-Za-z_][A-Za-z0-9_]*\\b"
|
||||
},
|
||||
{
|
||||
"comment": "Function call.",
|
||||
"name": "entity.name.function.call.carbon",
|
||||
"match": "\\b[A-Za-z_][A-Za-z0-9_]*(?=\\s*\\()"
|
||||
},
|
||||
{
|
||||
"comment": "UpperCamel names a type.",
|
||||
"name": "entity.name.type.carbon",
|
||||
"match": "\\b[A-Z][A-Za-z0-9_]*\\b"
|
||||
},
|
||||
{
|
||||
"comment": "lower_snake names a value.",
|
||||
"name": "variable.other.carbon",
|
||||
"match": "\\b[a-z_][A-Za-z0-9_]*\\b"
|
||||
"match": "\\b[A-Za-z_][A-Za-z0-9_]*\\b"
|
||||
}
|
||||
]
|
||||
},
|
||||
"punctuation": {
|
||||
"patterns": [
|
||||
{ "name": "punctuation.separator.carbon", "match": "," },
|
||||
{ "name": "punctuation.terminator.carbon", "match": ";" }
|
||||
{
|
||||
"name": "punctuation.section.parens.begin.bracket.round.carbon",
|
||||
"match": "\\("
|
||||
},
|
||||
{
|
||||
"name": "punctuation.section.parens.end.bracket.round.carbon",
|
||||
"match": "\\)"
|
||||
},
|
||||
{
|
||||
"name": "punctuation.section.block.begin.bracket.curly.carbon",
|
||||
"match": "\\{"
|
||||
},
|
||||
{
|
||||
"name": "punctuation.section.block.end.bracket.curly.carbon",
|
||||
"match": "\\}"
|
||||
},
|
||||
{
|
||||
"name": "punctuation.section.brackets.begin.bracket.square.carbon",
|
||||
"match": "\\["
|
||||
},
|
||||
{
|
||||
"name": "punctuation.section.brackets.end.bracket.square.carbon",
|
||||
"match": "\\]"
|
||||
},
|
||||
{ "name": "punctuation.separator.dot-access.carbon", "match": "\\." },
|
||||
{ "name": "punctuation.separator.comma.carbon", "match": "," },
|
||||
{ "name": "punctuation.terminator.statement.carbon", "match": ";" }
|
||||
]
|
||||
},
|
||||
"choice-definitions": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "A `choice` declaration, scoping names in its body as enum members and closing immediately if there is no body.",
|
||||
"begin": "\\b(choice)\\b",
|
||||
"beginCaptures": {
|
||||
"1": { "name": "storage.type.carbon" }
|
||||
},
|
||||
"end": "(?<=\\})|(?=[^\\s({])",
|
||||
"patterns": [
|
||||
{
|
||||
"begin": "(?<=\\bchoice)\\s+(?=(?:r#)?[A-Za-z_])",
|
||||
"end": "((?:r#)?[A-Za-z_][A-Za-z0-9_]*)\\b(?!\\s*(?:\\[[^\\[\\]]*\\]\\s*)?(?:\\([^()]*(?:\\([^()]*(?:\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*)?\\.)|(?=[^\\sA-Za-z_])|$",
|
||||
"endCaptures": {
|
||||
"1": { "name": "entity.name.type.carbon" }
|
||||
},
|
||||
"patterns": [{ "include": "#declared-name-qualifier" }]
|
||||
},
|
||||
{ "include": "#comments" },
|
||||
{
|
||||
"comment": "Choice parameters.",
|
||||
"begin": "\\(",
|
||||
"end": "(\\))|$",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.parens.begin.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.parens.end.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [{ "include": "#choice-parameters" }]
|
||||
},
|
||||
{
|
||||
"comment": "Choice body.",
|
||||
"begin": "\\{",
|
||||
"end": "(\\})|(?=[;=])",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.block.begin.bracket.curly.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.block.end.bracket.curly.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{ "include": "#comments" },
|
||||
{
|
||||
"comment": "Alternative parameters.",
|
||||
"begin": "\\(",
|
||||
"end": "(\\))|$",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.parens.begin.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.parens.end.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [{ "include": "#choice-parameters" }]
|
||||
},
|
||||
{
|
||||
"comment": "Invalid implicit parameter list on an alternative, matched so its contents are not scoped as enum members.",
|
||||
"begin": "\\[",
|
||||
"end": "(\\])|$",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.brackets.begin.bracket.square.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.brackets.end.bracket.square.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [{ "include": "#choice-parameters" }]
|
||||
},
|
||||
{ "include": "#keywords" },
|
||||
{ "include": "#literals" },
|
||||
{
|
||||
"name": "variable.other.enummember.carbon",
|
||||
"match": "\\b(?:r#)?[A-Za-z_][A-Za-z0-9_]*\\b"
|
||||
},
|
||||
{ "include": "#numbers" },
|
||||
{ "include": "#operators" },
|
||||
{ "include": "#punctuation" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"choice-parameters": {
|
||||
"patterns": [
|
||||
{ "include": "#comments" },
|
||||
{ "include": "#strings" },
|
||||
{ "include": "#inheritance" },
|
||||
{ "include": "#type-annotation" },
|
||||
{ "include": "#keywords" },
|
||||
{ "include": "#literals" },
|
||||
{ "include": "#numbers" },
|
||||
{ "include": "#operators" },
|
||||
{ "include": "#identifiers" },
|
||||
{ "include": "#punctuation" }
|
||||
]
|
||||
},
|
||||
"bindings": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Parameter bindings (`name: Type` when not preceded by `let` or `var`), with `variable.parameter` nested inside `variable.other`.",
|
||||
"name": "variable.other.carbon",
|
||||
"match": "(?<!\\.)(?<!->)\\b(r#)?([A-Za-z_][A-Za-z0-9_]*)(?=\\s*:(?![=!?]))",
|
||||
"captures": {
|
||||
"1": { "name": "punctuation.definition.raw-identifier.carbon" },
|
||||
"2": { "name": "variable.parameter.carbon" }
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"expression-parens": {
|
||||
"patterns": [
|
||||
{
|
||||
"comment": "Parentheses nested in an expression that sits inside a type, so that only the matching `)` ends the expression.",
|
||||
"begin": "\\(",
|
||||
"end": "(\\))|$",
|
||||
"beginCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.section.parens.begin.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.section.parens.end.bracket.round.carbon"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{ "include": "#expression-parens" },
|
||||
{ "include": "$self" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||