summaryrefslogtreecommitdiff
path: root/tests/examplefiles/nemerle_sample.n
blob: 5236857df39052d0f151d0bb973e7258f71ea127 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;

namespace Demo.Ns
{
  /// sample class
  public class ClassSample : Base
  {
    /* sample multiline comment */
#region region sample
    fieldSample : int;
#endregion

    public virtual someMethod(str : string) : list[double]
    {
      def x = "simple string";
      def x = $"simple $splice string $(spliceMethod() + 1)";
      def x = <#
        recursive <# string #> sample
      #>;
      def x = $<#
        recursive $splice <# string #> sample
        ..$(lst; "; "; x => $"x * 2 = $(x * 2)") str
      #>;
      def x = @"somestring \";

      def localFunc(arg)
      {
         arg + 1;
      }

      match (localFunc(2))
      {
        | 3 => "ok";
        | _ => "fail";
      }

      using (x = SomeObject())
      {
        foreach (item in someCollection)
        {
          def i = try
          {
            int.Parse(item)
          }
          catch
          {
            | _ is FormatException => 0;
          }
          when (i > 0xff)
            unless (i < 555L)
              WriteLine(i);
          
        }
      }
      protected override overrideSample() : void
      {}

      private privateSample() : void
      {}

      public abstract abstractSample() : void
      {}
    }

  }

  module ModuleSample
  {
  }

  variant RgbColor {
   | Red
   | Yellow
   | Green
   | Different {
       red : float;
       green : float;
       blue : float;
     }
  }

  macro sampleMacro(expr)
  syntax ("write", expr)
  {
    <[ WriteLine($(expr : dyn)) ]>
  }
}