File indexing completed on 2024-05-19 15:23:14

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>highlight.pony</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Pony) - Theme (Breeze Dark)"/>
0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre>
0007 <span style="color:#7a7c7d;">// Test file for Pony syntax highlighting, released under MIT License</span>
0008 
0009 <span style="font-weight:bold;">primitive</span> <span style="color:#2980b9;">Red</span>   <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">apply</span><span style="color:#3f8058;">():</span> <span style="color:#2980b9;">U32</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#f67400;">0xFFFF0000</span>
0010 
0011 <span style="font-weight:bold;">primitive</span> <span style="color:#2980b9;">Colours</span>
0012   <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">black</span><span style="color:#3f8058;">():</span> <span style="color:#2980b9;">U32</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#f67400;">0xFF000000</span>
0013   <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">red</span><span style="color:#3f8058;">():</span> <span style="color:#2980b9;">U32</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#f67400;">0xFFFF0000</span>
0014 
0015 <span style="font-weight:bold;">primitive</span> <span style="color:#2980b9;">Black</span>
0016 <span style="font-weight:bold;">primitive</span> <span style="color:#2980b9;">Blue</span>
0017 
0018 <span style="font-weight:bold;">type</span> <span style="color:#2980b9;">Colour</span> <span style="font-weight:bold;">is</span> <span style="color:#3f8058;">(</span><span style="color:#2980b9;">Black</span> <span style="color:#3f8058;">|</span> <span style="color:#2980b9;">Blue</span> <span style="color:#3f8058;">)</span>
0019 
0020 <span style="font-weight:bold;">primitive</span> <span style="color:#2980b9;">ColourList</span>
0021   <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;font-style:italic;">tag</span> <span style="color:#8e44ad;">apply</span><span style="color:#3f8058;">():</span> <span style="color:#2980b9;">Array</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">Colour</span><span style="color:#3f8058;">]</span> <span style="color:#3f8058;">=&gt;</span>
0022     <span style="color:#3f8058;">[</span><span style="color:#2980b9;">Black</span><span style="color:#3f8058;">;</span> <span style="color:#2980b9;">Blue</span><span style="color:#3f8058;">]</span>
0023 
0024 <span style="color:#fdbc4b;font-weight:bold;">for</span> colour <span style="font-weight:bold;">in</span> <span style="color:#2980b9;">ColourList</span><span style="color:#3f8058;">().</span>values<span style="color:#3f8058;">()</span> <span style="color:#fdbc4b;font-weight:bold;">do</span>
0025 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0026 
0027 <span style="font-weight:bold;">type</span> <span style="color:#2980b9;">EGLEvent</span> <span style="font-weight:bold;">is</span> <span style="color:#3f8058;">(</span><span style="color:#2980b9;">U8</span><span style="color:#3f8058;">,</span> <span style="color:#2980b9;">F32</span><span style="color:#3f8058;">,</span> <span style="color:#2980b9;">F32</span><span style="color:#3f8058;">)</span>
0028 <span style="color:#3f8058;">(</span><span style="font-weight:bold;">var</span> code<span style="color:#3f8058;">,</span> <span style="font-weight:bold;">var</span> x<span style="color:#3f8058;">,</span> <span style="font-weight:bold;">var</span> y<span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=</span> <span style="color:#8e44ad;">@getEvent</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">EGLEvent</span><span style="color:#3f8058;">]()</span>
0029 
0030 <span style="font-weight:bold;">primitive</span> <span style="color:#2980b9;">_XDisplayHandle</span>
0031 <span style="font-weight:bold;">primitive</span> <span style="color:#2980b9;">_EGLDisplayHandle</span>
0032 
0033 <span style="font-weight:bold;">let</span> x_dpy <span style="color:#3f8058;">=</span> <span style="color:#8e44ad;">@XOpenDisplay</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">Pointer</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">_XDisplayHandle</span><span style="color:#3f8058;">]](</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">(</span><span style="color:#f67400;">0</span><span style="color:#3f8058;">))</span>
0034 <span style="color:#fdbc4b;font-weight:bold;">if</span> x_dpy<span style="color:#3f8058;">.</span>is_null<span style="color:#3f8058;">()</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0035   env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span><span style="color:#f44f4f;">&quot;XOpenDisplay failed&quot;</span><span style="color:#3f8058;">)</span>
0036 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0037 
0038 <span style="font-weight:bold;">let</span> e_dpy <span style="color:#3f8058;">=</span> <span style="color:#8e44ad;">@eglGetDisplay</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">Pointer</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">_EGLDisplayHandle</span><span style="color:#3f8058;">]](</span>x_dpy<span style="color:#3f8058;">)</span>
0039 <span style="color:#fdbc4b;font-weight:bold;">if</span> e_dpy<span style="color:#3f8058;">.</span>is_null<span style="color:#3f8058;">()</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0040   env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span><span style="color:#f44f4f;">&quot;eglGetDisplay failed&quot;</span><span style="color:#3f8058;">)</span>
0041 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0042 
0043 <span style="font-weight:bold;">primitive</span> <span style="color:#2980b9;">_EGLConfigHandle</span>
0044 <span style="font-weight:bold;">let</span> a <span style="color:#3f8058;">=</span> <span style="color:#2980b9;">Array</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">U16</span><span style="color:#3f8058;">](</span><span style="color:#f67400;">8</span><span style="color:#3f8058;">)</span>
0045 a<span style="color:#3f8058;">.</span>push<span style="color:#3f8058;">(</span><span style="color:#f67400;">0x3040</span><span style="color:#3f8058;">)</span>
0046 a<span style="color:#3f8058;">.</span>push<span style="color:#3f8058;">(</span><span style="color:#f67400;">0b01011</span><span style="color:#3f8058;">)</span>
0047 <span style="font-weight:bold;">let</span> config <span style="color:#3f8058;">=</span> <span style="color:#2980b9;">Pointer</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">_EGLConfigHandle</span><span style="color:#3f8058;">]</span>
0048 <span style="color:#fdbc4b;font-weight:bold;">if</span> <span style="color:#8e44ad;">@eglChooseConfig</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">](</span>e_dpy<span style="color:#3f8058;">,</span> a<span style="color:#3f8058;">,</span> config<span style="color:#3f8058;">,</span> <span style="color:#2980b9;">U32</span><span style="color:#3f8058;">(</span><span style="color:#f67400;">1</span><span style="color:#3f8058;">),</span> <span style="color:#2980b9;">Pointer</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">])</span> <span style="color:#3f8058;">==</span> <span style="color:#f67400;">0</span> <span style="color:#fdbc4b;font-weight:bold;">then</span>
0049     env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span><span style="color:#f44f4f;">&quot;eglChooseConfig failed&quot;</span><span style="color:#3f8058;">)</span>
0050 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0051 
0052 
0053 <span style="font-weight:bold;">actor</span> <span style="color:#2980b9;">Main</span>
0054   <span style="font-weight:bold;">new</span> <span style="color:#8e44ad;">create</span><span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">Env</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=&gt;</span>
0055     <span style="color:#7a7c7d;">// The no of arguments</span>
0056     env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">.</span>args<span style="color:#3f8058;">.</span>size<span style="color:#3f8058;">().</span>string<span style="color:#3f8058;">())</span>
0057     <span style="color:#fdbc4b;font-weight:bold;">for</span> value <span style="font-weight:bold;">in</span> env<span style="color:#3f8058;">.</span>args<span style="color:#3f8058;">.</span>values<span style="color:#3f8058;">()</span> <span style="color:#fdbc4b;font-weight:bold;">do</span>
0058       env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span>value<span style="color:#3f8058;">)</span>
0059     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0060     <span style="color:#7a7c7d;">// Access the arguments the first one will always be the the appication name</span>
0061     <span style="color:#fdbc4b;font-weight:bold;">try</span> env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">.</span>args<span style="color:#3f8058;">(</span><span style="color:#f67400;">0</span><span style="color:#3f8058;">)?)</span> <span style="color:#fdbc4b;font-weight:bold;">end</span>
0062 
0063 <span style="font-weight:bold;">actor</span> <span style="color:#2980b9;">Main</span>
0064   <span style="font-weight:bold;">new</span> <span style="color:#8e44ad;">create</span><span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">Env</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=&gt;</span>
0065     <span style="font-weight:bold;">var</span> options <span style="color:#3f8058;">=</span> <span style="color:#2980b9;">Options</span><span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">)</span>
0066 
0067     options
0068       <span style="color:#3f8058;">.</span>add<span style="color:#3f8058;">(</span><span style="color:#f44f4f;">&quot;output&quot;</span><span style="color:#3f8058;">,</span> <span style="color:#f44f4f;">&quot;o&quot;</span><span style="color:#3f8058;">,</span> <span style="color:#2980b9;">StringArgument</span><span style="color:#3f8058;">)</span>
0069 
0070     env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span>options<span style="color:#3f8058;">.</span>has_argument<span style="color:#3f8058;">())</span>
0071 
0072     <span style="color:#fdbc4b;font-weight:bold;">for</span> option <span style="font-weight:bold;">in</span> options <span style="color:#fdbc4b;font-weight:bold;">do</span>
0073       <span style="color:#fdbc4b;font-weight:bold;">match</span> option
0074       <span style="color:#3f8058;">|</span> <span style="color:#3f8058;">(</span><span style="color:#f44f4f;">&quot;output&quot;</span><span style="color:#3f8058;">,</span> <span style="font-weight:bold;">var</span> arg<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">String</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=&gt;</span> _outputFileName <span style="color:#3f8058;">=</span> arg<span style="color:#3f8058;">.</span>string<span style="color:#3f8058;">()</span>
0075       <span style="color:#3f8058;">|</span> <span style="font-weight:bold;">let</span> err<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">ParseError</span> <span style="color:#3f8058;">=&gt;</span>
0076           err<span style="color:#3f8058;">.</span>report<span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">)</span>
0077           env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span>
0078             <span style="color:#f44f4f;">&quot;&quot;&quot;</span>
0079 <span style="color:#f44f4f;">            pony-embed [OPTIONS]</span>
0080 <span style="color:#f44f4f;">              --output     name   string output filename.</span>
0081 <span style="color:#f44f4f;">            &quot;&quot;&quot;</span>
0082           <span style="color:#3f8058;">)</span>
0083       <span style="color:#fdbc4b;font-weight:bold;">end</span>
0084     <span style="color:#fdbc4b;font-weight:bold;">end</span>
0085 
0086 <span style="font-weight:bold;">use</span> <span style="color:#f44f4f;">&quot;ponytest&quot;</span>
0087 
0088 <span style="font-weight:bold;">actor</span> <span style="color:#2980b9;">Main</span> <span style="font-weight:bold;">is</span> <span style="color:#2980b9;">TestList</span>
0089   <span style="font-weight:bold;">new</span> <span style="color:#8e44ad;">create</span><span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">Env</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#2980b9;">PonyTest</span><span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">,</span> <span style="font-weight:bold;">this</span><span style="color:#3f8058;">)</span>
0090   <span style="font-weight:bold;">new</span> <span style="color:#8e44ad;">make</span><span style="color:#3f8058;">()</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#2980b9;">None</span>
0091 
0092   <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;font-style:italic;">tag</span> <span style="color:#8e44ad;">tests</span><span style="color:#3f8058;">(</span>test<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">PonyTest</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=&gt;</span>
0093     test<span style="color:#3f8058;">(</span><span style="color:#2980b9;">_TestAddition</span><span style="color:#3f8058;">)</span>
0094 
0095 <span style="font-weight:bold;">class</span> <span style="color:#2980b9;font-style:italic;">iso</span> <span style="color:#2980b9;">_TestAddition</span> <span style="font-weight:bold;">is</span> <span style="color:#2980b9;">UnitTest</span>
0096   <span style="color:#f44f4f;">&quot;&quot;&quot;</span>
0097 <span style="color:#f44f4f;">  Adding 2 numbers</span>
0098 <span style="color:#f44f4f;">  &quot;&quot;&quot;</span>
0099   <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">name</span><span style="color:#3f8058;">():</span> <span style="color:#2980b9;">String</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#f44f4f;">&quot;u32/add&quot;</span>
0100 
0101   <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">apply</span><span style="color:#3f8058;">(</span>h<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">TestHelper</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">TestResult</span> <span style="color:#3f8058;">=&gt;</span>
0102     h<span style="color:#3f8058;">.</span>expect_eq<span style="color:#3f8058;">[</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">](</span><span style="color:#f67400;">2</span> <span style="color:#3f8058;">+</span> <span style="color:#f67400;">2</span><span style="color:#3f8058;">,</span> <span style="color:#f67400;">4</span><span style="color:#3f8058;">)</span>
0103 
0104 <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;font-style:italic;">tag</span> <span style="color:#8e44ad;">log</span><span style="color:#3f8058;">(</span>msg<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">String</span><span style="color:#3f8058;">,</span> verbose<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">Bool</span> <span style="color:#3f8058;">=</span> <span style="font-weight:bold;">false</span><span style="color:#3f8058;">)</span>
0105 <span style="font-weight:bold;">be</span> <span style="color:#8e44ad;">fail</span><span style="color:#3f8058;">()</span> <span style="color:#3f8058;">=&gt;</span>
0106 <span style="font-weight:bold;">be</span> <span style="color:#8e44ad;">assert_failed</span><span style="color:#3f8058;">(</span>msg<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">String</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=&gt;</span>
0107 <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;font-style:italic;">tag</span> <span style="color:#8e44ad;">assert_true</span><span style="color:#3f8058;">(</span>actual<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">Bool</span><span style="color:#3f8058;">,</span> msg<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">String</span> <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;&quot;</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">?</span>
0108 <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;font-style:italic;">tag</span> <span style="color:#8e44ad;">expect_true</span><span style="color:#3f8058;">(</span>actual<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">Bool</span><span style="color:#3f8058;">,</span> msg<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">String</span> <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;&quot;</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0109 <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;font-style:italic;">tag</span> <span style="color:#8e44ad;">expect_eq</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">A</span><span style="color:#3f8058;">:</span> <span style="color:#3f8058;">(</span><span style="color:#2980b9;">Equatable</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">A</span><span style="color:#3f8058;">]</span> <span style="color:#2980b9;">#read</span> <span style="color:#3f8058;">&amp;</span> <span style="color:#2980b9;">Stringable</span><span style="color:#3f8058;">)]</span>
0110   <span style="color:#3f8058;">(</span>expect<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">,</span> actual<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">,</span> msg<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">String</span> <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;&quot;</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0111 <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;font-style:italic;">tag</span> <span style="color:#8e44ad;">expect_eq</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">A</span><span style="color:#3f8058;">:</span> <span style="color:#3f8058;">(</span><span style="color:#2980b9;">Equatable</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">A</span><span style="color:#3f8058;">]</span> <span style="color:#da4453;text-decoration:underline;">#unknown</span> <span style="color:#3f8058;">&amp;</span> <span style="color:#2980b9;">Stringable</span><span style="color:#3f8058;">)]</span>
0112   <span style="color:#3f8058;">(</span>expect<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">,</span> actual<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">,</span> msg<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">String</span> <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;&quot;</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0113 
0114 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">add</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0115 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">sub</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0116 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">mul</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0117 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">div</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0118 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">mod</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0119 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">eq</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0120 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">ne</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0121 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">lt</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0122 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">le</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0123 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">ge</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0124 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">gt</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">Bool</span>
0125 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">shl</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0126 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">shr</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0127 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">op_and</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span><span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0128 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">op_or</span><span style="color:#3f8058;">(</span>other<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0129 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">op_xor</span><span style="color:#3f8058;">(</span>othr<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">A</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">A</span>
0130 
0131 <span style="font-weight:bold;">class</span> <span style="color:#2980b9;">Test</span>
0132   <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">alpha</span><span style="color:#3f8058;">()</span> <span style="color:#3f8058;">=&gt;</span>
0133     <span style="color:#f44f4f;">&quot;&quot;&quot;</span>
0134 <span style="color:#f44f4f;">    &quot;&quot;&quot;</span>
0135 
0136 <span style="font-weight:bold;">let</span> dice<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">Array</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">]</span> <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">[</span><span style="color:#f67400;">1</span><span style="color:#3f8058;">;</span> <span style="color:#f67400;">2</span><span style="color:#3f8058;">;</span> <span style="color:#f67400;">3</span>
0137   <span style="color:#f67400;">4</span>
0138   <span style="color:#f67400;">5</span>
0139   <span style="color:#f67400;">6</span>
0140 <span style="color:#3f8058;">]</span>
0141 
0142 <span style="font-weight:bold;">actor</span> <span style="color:#2980b9;">Main</span>
0143   <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">foo</span><span style="color:#3f8058;">(</span>n<span style="color:#3f8058;">:</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">):</span> <span style="color:#3f8058;">{</span><span style="color:#2980b9;font-style:italic;">ref</span><span style="color:#3f8058;">(</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">):</span> <span style="color:#2980b9;">U32</span><span style="color:#3f8058;">}</span> <span style="color:#3f8058;">=&gt;</span>
0144     <span style="font-weight:bold;">var</span> s<span style="color:#3f8058;">:</span> <span style="color:#2980b9;">Array</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">]</span> <span style="color:#3f8058;">=</span> <span style="color:#2980b9;">Array</span><span style="color:#3f8058;">[</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">].</span>init<span style="color:#3f8058;">(</span>n<span style="color:#3f8058;">,</span> <span style="color:#f67400;">1</span><span style="color:#3f8058;">)</span>
0145     <span style="color:#3f8058;">{</span><span style="color:#2980b9;font-style:italic;">ref</span><span style="color:#3f8058;">(</span>i<span style="color:#3f8058;">:</span><span style="color:#2980b9;">U32</span><span style="color:#3f8058;">)(</span>s<span style="color:#3f8058;">):</span> <span style="color:#2980b9;">U32</span> <span style="color:#3f8058;">=&gt;</span>
0146       <span style="color:#fdbc4b;font-weight:bold;">try</span>
0147         s<span style="color:#3f8058;">(</span><span style="color:#f67400;">0</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=</span> s<span style="color:#3f8058;">(</span><span style="color:#f67400;">0</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">+</span> i
0148         s<span style="color:#3f8058;">(</span><span style="color:#f67400;">0</span><span style="color:#3f8058;">)</span>
0149       <span style="color:#fdbc4b;font-weight:bold;">else</span>
0150         <span style="color:#f67400;">0</span>
0151       <span style="color:#fdbc4b;font-weight:bold;">end</span>
0152     <span style="color:#3f8058;">}</span>
0153 
0154   <span style="font-weight:bold;">new</span> <span style="color:#8e44ad;">create</span><span style="color:#3f8058;">(</span>env<span style="color:#3f8058;">:</span><span style="color:#2980b9;">Env</span><span style="color:#3f8058;">)</span> <span style="color:#3f8058;">=&gt;</span>
0155     <span style="font-weight:bold;">var</span> f <span style="color:#3f8058;">=</span> foo<span style="color:#3f8058;">(</span><span style="color:#f67400;">5</span><span style="color:#3f8058;">)</span>
0156     env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span>f<span style="color:#3f8058;">(</span><span style="color:#f67400;">10</span><span style="color:#3f8058;">).</span>string<span style="color:#3f8058;">())</span>
0157     env<span style="color:#3f8058;">.</span>out<span style="color:#3f8058;">.</span>print<span style="color:#3f8058;">(</span>f<span style="color:#3f8058;">(</span><span style="color:#f67400;">20</span><span style="color:#3f8058;">).</span>string<span style="color:#3f8058;">())</span>
0158 
0159 <span style="color:#7a7c7d;">/* nested /* commentary */ */</span>
0160 <span style="color:#7a7c7d;">// single comment</span>
0161 
0162 <span style="font-weight:bold;">class</span> <span style="color:#2980b9;">A</span>
0163 <span style="font-weight:bold;">class</span> <span style="color:#2980b9;">_A</span>
0164 x'
0165 x''
0166 x'<span style="color:#3f8058;">.</span>string<span style="color:#3f8058;">()</span>
0167 <span style="color:#3daee9;">'\uaaaa'</span>
0168 <span style="color:#3daee9;">'\Ubbbbbb'</span>
0169 <span style="color:#3daee9;">'\xcc'</span>
0170 <span style="color:#3daee9;">'\''</span>
0171 <span style="color:#3daee9;">'\n'</span>
0172 <span style="color:#f44f4f;">&quot;</span><span style="color:#3daee9;">\uaaaa</span><span style="color:#f44f4f;">a&quot;</span>
0173 <span style="color:#f44f4f;">&quot;</span><span style="color:#3daee9;">\Ubbbbbb</span><span style="color:#f44f4f;">b&quot;</span>
0174 <span style="color:#f44f4f;">&quot;</span><span style="color:#3daee9;">\xcc</span><span style="color:#f44f4f;">c&quot;</span>
0175 <span style="color:#f44f4f;">&quot;</span><span style="color:#3daee9;">\&quot;</span><span style="color:#f44f4f;">&quot;</span>
0176 <span style="color:#f44f4f;">&quot;</span><span style="color:#3daee9;">\n</span><span style="color:#f44f4f;">&quot;</span>
0177 <span style="color:#f67400;">34.4</span>
0178 <span style="color:#f67400;">34.4e43</span>
0179 <span style="color:#f67400;">43e4</span>
0180 <span style="color:#f67400;">0x3040</span>
0181 <span style="color:#f67400;">0xaF</span>
0182 <span style="color:#f67400;">0b01</span>
0183 <span style="color:#f67400;">3_43_4</span>
0184 <span style="color:#f67400;">0x0_4</span>
0185 
0186 <span style="font-weight:bold;">fun</span> <span style="color:#8e44ad;">create</span><span style="color:#3f8058;">():</span> <span style="color:#2980b9;">U32</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#f67400;">0</span>
0187 <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;font-style:italic;">iso</span> <span style="color:#8e44ad;">create</span><span style="color:#3f8058;">():</span> <span style="color:#2980b9;">U32</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#f67400;">0</span>
0188 <span style="font-weight:bold;">fun</span> <span style="color:#2980b9;">\\ abc \\</span>  <span style="color:#2980b9;font-style:italic;">iso</span> <span style="color:#8e44ad;">create</span><span style="color:#3f8058;">():</span> <span style="color:#2980b9;">U32</span> <span style="color:#3f8058;">=&gt;</span> <span style="color:#f67400;">0</span>
0189 <span style="font-weight:bold;">class</span> <span style="color:#2980b9;">\\ packet, blah \\</span> <span style="color:#2980b9;font-style:italic;">iso</span> <span style="color:#2980b9;">Xyz</span>
0190 <span style="color:#fdbc4b;font-weight:bold;">if</span> <span style="color:#2980b9;">\\ likely \\</span> a <span style="color:#fdbc4b;font-weight:bold;">then</span>
0191 <span style="color:#fdbc4b;font-weight:bold;">end</span>
0192 
0193 a<span style="color:#3f8058;">.</span>endnormal
0194 
0195 print<span style="color:#3f8058;">();</span>print<span style="color:#3f8058;">()</span>
0196 
0197 <span style="color:#7a7c7d;">/* syntactically false: */</span>
0198 
0199 <span style="font-weight:bold;">class</span> <span style="color:#da4453;text-decoration:underline;">_aA</span>
0200 <span style="font-weight:bold;">class</span> <span style="color:#da4453;text-decoration:underline;">_a</span>
0201 <span style="font-weight:bold;">class</span> <span style="color:#da4453;text-decoration:underline;">a</span>
0202 <span style="color:#da4453;text-decoration:underline;">0b2332</span>
0203 <span style="color:#da4453;text-decoration:underline;">0b</span>
0204 <span style="color:#da4453;text-decoration:underline;">0x</span>
0205 <span style="color:#da4453;text-decoration:underline;">0xgf</span>
0206 <span style="color:#da4453;text-decoration:underline;">0f00</span>
0207 <span style="color:#da4453;text-decoration:underline;">3.</span>
0208 <span style="color:#da4453;text-decoration:underline;">.3</span>
0209 <span style="color:#da4453;text-decoration:underline;">3.</span>e3
0210 <span style="color:#da4453;text-decoration:underline;">3_</span>
0211 <span style="color:#da4453;text-decoration:underline;">3__43_4</span>
0212 <span style="color:#da4453;text-decoration:underline;">''</span>
0213 <span style="color:#da4453;text-decoration:underline;">'</span>\u'
0214 <span style="color:#da4453;text-decoration:underline;">'</span>\ua'
0215 <span style="color:#da4453;text-decoration:underline;">'</span>\uaaa'
0216 <span style="color:#da4453;text-decoration:underline;">'</span>\uaaaaa'
0217 <span style="color:#da4453;text-decoration:underline;">'</span>\uyyyy'
0218 <span style="color:#f44f4f;">&quot;</span><span style="color:#da4453;text-decoration:underline;">\u</span><span style="color:#f44f4f;">&quot;</span>
0219 <span style="color:#f44f4f;">&quot;</span><span style="color:#da4453;text-decoration:underline;">\u</span><span style="color:#f44f4f;">a&quot;</span>
0220 <span style="color:#f44f4f;">&quot;</span><span style="color:#da4453;text-decoration:underline;">\u</span><span style="color:#f44f4f;">aaa&quot;</span>
0221 <span style="color:#f44f4f;">&quot;</span><span style="color:#da4453;text-decoration:underline;">\u</span><span style="color:#f44f4f;">yyyy&quot;</span>
0222 a<span style="color:#da4453;text-decoration:underline;">'</span>a
0223 
0224 <span style="font-weight:bold;">class</span> <span style="color:#da4453;text-decoration:underline;">badType</span>
0225 print<span style="color:#3f8058;">()</span><span style="color:#da4453;text-decoration:underline;">;</span>
0226 </pre></body></html>