Warning, /frameworks/syntax-highlighting/autotests/folding/highlight.d.fold is written in an unsupported language. File is not indexed.

0001 <beginfold id='1'>/********</beginfold id='1'>
0002 * Highlight testing module.
0003 *
0004 * Do not attempt to run this!
0005 <endfold id='1'>***********/</endfold id='1'>
0006 module highlighttest;
0007 import X = null;
0008 
0009 <beginfold id='2'>/++</beginfold id='2'> Pragma directives. DDoc + DDoc embedded items. Special Tokens.
0010 +
0011 + ---
0012 + // comment
0013 + #line 12 "hightlighttest.d"   <beginfold id='3'>/*</beginfold id='3'> block comment <endfold id='3'>*/</endfold id='3'>
0014 + #line __LINE__ __FILE__       <beginfold id='2'>/++</beginfold id='2'> embedded block comment <endfold id='2'>+/</endfold id='2'>
0015 +
0016 + pragma <beginfold id='3'>/*</beginfold id='3'> <endfold id='3'>*/</endfold id='3'> (msg, "what?");
0017 + pragma(<beginfold id='2'>/++</beginfold id='2'> <endfold id='2'>+/</endfold id='2'> lib, "insane.a");
0018 + pragma(inline);
0019 + pragma(linkerDirective);
0020 + pragma(mangle);
0021 + pragma(startaddress);
0022 + pragma(D_Custom_Extension, "custom data");
0023 + pragma(foo 0);
0024 + ---
0025 <endfold id='2'>+/</endfold id='2'>
0026 
0027 /// version condition
0028 version = X;
0029 version = 1_2_3;
0030 version (X) ;
0031 version(linux) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0032 
0033 /// linkage
0034 extern
0035     (C) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0036 extern :
0037 ;
0038 extern (C++) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0039 extern (C++, foo.bar.baz) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0040 extern (D) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0041 extern (Windows) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0042 extern (Pascal) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0043 extern (System) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0044 extern (unknown) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0045 extern (C,) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0046 extern (C++, foo, bar) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0047 
0048 /// alias & typedef
0049 alias int.min minint;
0050 typedef int myint;
0051 
0052 int main(char[][] args) <beginfold id='4'>{</beginfold id='4'>
0053     /// statements
0054     if (1) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0055     else <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0056     with (N) <beginfold id='4'>{</beginfold id='4'>x = B<endfold id='4'>}</endfold id='4'>
0057     
0058     /// attributes
0059     auto x = 1;
0060     static if (true) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0061     void (in X, out Y) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'> // NOTE: using in like this is rare, more common to use as an expression and no way to tell apart?
0062     
0063     /// deprecated
0064     deprecated void fct ();
0065     
0066     /// types
0067     void a;
0068     ushort u;
0069     int[uint] AA;
0070     class C;
0071     enum N : int <beginfold id='4'>{</beginfold id='4'> A = 5, B <endfold id='4'>}</endfold id='4'>
0072     typeof(u) u2;
0073     
0074     /// expressions
0075     x = cast(int) 55;
0076     void* p = null;
0077     p = cast(void*) new int;
0078     x = 1 in AA;        // NOTE: a THIRD use of in. How to detect??
0079     assert (true);
0080         
0081     /// libsymbols
0082     string s = "";
0083     throw new Exception;
0084     TypeInfo ti = typeid(int);
0085     
0086     /// tests
0087     debug <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0088     debug (2) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0089     debug (DSymb) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0090     unittest <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0091     
0092     /// scope (as attribute and as statement)
0093     scope struct S;
0094     scope (exit) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0095     scope 
0096      (success) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'> // NOTE: rules cannot match across new-lines
0097     scope (failure) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0098     
0099     /// Properties
0100     x = int.min;
0101     s = (5-3).stringof;
0102     
0103     /// strings
0104     s = r"raw string";
0105     s = x"00FF";
0106     s = \n \a;
0107     s = \u1234;
0108     s = \U12345678;
0109     s = \&amp; ;
0110     char c = 'a';
0111     s = "abc 012 \" \n \x12 \u1234 \U12345678";
0112     s = `BQString '"`;
0113     s = q{foo "bar" 123};
0114     s = q"FOO
0115 foo
0116 FOO";
0117     s = q"[foo [bar] q"[baz]"]";
0118     s = q"(foo (bar) q"(baz)")";
0119     s = q"<foo <bar> q"<baz>">";
0120     s = q"{foo {bar} q"{baz}"}";
0121     s = q"/foo/";
0122     s = q"!foo!";
0123     
0124     /// region markers
0125     <beginfold id='5'>//BEGIN</beginfold id='5'> x
0126     <endfold id='5'>//END</endfold id='5'> x
0127     
0128     /// DDoc
0129     <beginfold id='1'>/*******</beginfold id='1'>
0130     * DDoc
0131     *
0132     * Section:
0133     * New section.
0134     * $(I italic)
0135     <endfold id='1'>*******/</endfold id='1'>
0136     <beginfold id='2'>/+++++++</beginfold id='2'>
0137     + DDoc
0138     + /+
0139     + +/
0140     <endfold id='2'>+++++++/</endfold id='2'>
0141     
0142     // comments
0143     // FIXME NOTE
0144     <beginfold id='3'>/*</beginfold id='3'> comment <endfold id='3'>*/</endfold id='3'>
0145     <beginfold id='6'>/+</beginfold id='6'> comment <beginfold id='6'>/+</beginfold id='6'> nested comment <endfold id='6'>+/</endfold id='6'> <endfold id='6'>+/</endfold id='6'>
0146     
0147     /// brace folding
0148     <beginfold id='4'>{</beginfold id='4'>
0149     <endfold id='4'>}</endfold id='4'>
0150     
0151     <beginfold id='1'>/**</beginfold id='1'> normal text
0152     * ---
0153     * .x;
0154     * ..
0155     * ...
0156     * ....
0157     * .....
0158     * _._
0159     * _e1
0160     * ---
0161     <endfold id='1'>*/</endfold id='1'>
0162     
0163     /// float and int literals
0164     int i;
0165     real r;
0166     ireal ir;
0167     r = .0;
0168     r = 0f;
0169     ir = 0e0i;
0170     ir = 0.fi;
0171     r = 0.0e0;
0172     r = 0xF.Fp0;
0173     r = 0x_._p0_;
0174     i = 5;
0175     i = -1;
0176     i = 0b10;
0177     i = 0070;
0178     i = 00;
0179     i = 0xF0;
0180     
0181     /// ranges
0182     int[] A;
0183     i = A[1];
0184     A = A[0..$];
0185     A = A[0..0];
0186     A = A[0..length];
0187     
0188     /// labels
0189     label:
0190     goto label;
0191     
0192     /// function, delegate
0193     creal function () fp = function creal() <beginfold id='4'>{</beginfold id='4'> return 0f+0fi; <endfold id='4'>}</endfold id='4'>;
0194     void delegate (in int i, lazy int b) dg = delegate void (int, int) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0195     
0196     /// in, out, body
0197     // NOTE: highlighting in & out as statements here could be difficult
0198     float F ()
0199     in <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0200     out (result) <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0201     body <beginfold id='4'>{</beginfold id='4'><endfold id='4'>}</endfold id='4'>
0202     
0203     /// try, catch, finally
0204     try <beginfold id='4'>{</beginfold id='4'>
0205         throw new Exception("oh no... ");
0206     <endfold id='4'>}</endfold id='4'> catch (Exception e) <beginfold id='4'>{</beginfold id='4'>
0207     <endfold id='4'>}</endfold id='4'> finally <beginfold id='4'>{</beginfold id='4'>
0208     <endfold id='4'>}</endfold id='4'>
0209     
0210     /// mixin
0211     mixin("return false;").stringof;
0212     
0213     /// templates
0214     macro; // what does this do?
0215     template Tp (T) <beginfold id='4'>{</beginfold id='4'>
0216         Tp t;
0217     <endfold id='4'>}</endfold id='4'>
0218     Tp!(int) y;
0219 <endfold id='4'>}</endfold id='4'>