annotate basic/SourceLocation.d @ 164:ba94fd563548

The symbol for the constructor a "new"-exp is calling is now stored in callSym in NewExp.
author Anders Johnsen <skabet@gmail.com>
date Tue, 22 Jul 2008 16:53:47 +0200
parents 6ec686d9c87d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
88
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
1 module basic.SourceLocation;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
2
148
6ec686d9c87d Fixed some for parsing, and removed a little ugly bug.
Anders Johnsen <skabet@gmail.com>
parents: 106
diff changeset
3 import Integer = tango.text.convert.Integer;
6ec686d9c87d Fixed some for parsing, and removed a little ugly bug.
Anders Johnsen <skabet@gmail.com>
parents: 106
diff changeset
4
88
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
5 /// Shorter alias for SourceLocation
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
6 public alias SourceLocation SLoc;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
7
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
8 /// SourceLocation points to a place in some buffer
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
9 struct SourceLocation
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
10 {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
11 /// Returns true, if the location is from a real file
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
12 bool isReal() { return (val & 0x80_00_00_00) == 0; }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
13 /// Returns true, if the location is not from a real file
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
14 bool isVirtual() { return (val & 0x80_00_00_00) != 0; }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
15
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
16 /// Check if this location is invalid or not
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
17 bool isValid() { return val != uint.max; }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
18 /// ditto
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
19 bool isInvalid() { return val == uint.max; }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
20
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
21 /**
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
22 Extracts the file id.
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
23
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
24 Warning: In release mode this may return junk, if the loc is not from a
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
25 file
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
26 **/
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
27 uint fileID() {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
28 assert(isValid, "Location is invalid");
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
29 assert(isReal, "You can only extract fileID from a real location");
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
30 // Here we can rely on two facts, first that the high bit is zero
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
31 // since its a real position, second that FileOffset is saved in the
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
32 // high end, so all we need is some shifting
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
33 return val >> Bits.FileOffset;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
34 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
35
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
36 /**
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
37 Extracts the offset into the "file". (actually in to the referenced
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
38 chunk)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
39
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
40 Warning: In release mode this may return junk, if the loc is not from a
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
41 file
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
42 **/
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
43 uint fileOffset() {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
44 assert(isValid, "Location is invalid");
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
45 assert(isReal, "You can only extract fileOffset from real locations");
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
46 // FileOffset is stored in the lower bits, so all that is needed is a
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
47 // binary and with all ones in the lower bits.
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
48 return val & (1 << Bits.FileOffset) - 1;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
49 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
50
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
51 /// Get a new location, placed n bytes after the given location
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
52 SourceLocation opAdd(int n)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
53 {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
54 SourceLocation res = *this;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
55 res.val += n;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
56 return res;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
57 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
58
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
59 /// Get a new location, placed n bytes before the given location
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
60 SourceLocation opSub(int n)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
61 {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
62 SourceLocation res = *this;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
63 res.val -= n;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
64 return res;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
65 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
66
106
89db676fbacb Now able of understanding strings.
Anders Johnsen <skabet@gmail.com>
parents: 100
diff changeset
67 /// Get the length between two location
89db676fbacb Now able of understanding strings.
Anders Johnsen <skabet@gmail.com>
parents: 100
diff changeset
68 int opSub(SourceLocation loc)
89db676fbacb Now able of understanding strings.
Anders Johnsen <skabet@gmail.com>
parents: 100
diff changeset
69 {
89db676fbacb Now able of understanding strings.
Anders Johnsen <skabet@gmail.com>
parents: 100
diff changeset
70 return val - loc.val;
89db676fbacb Now able of understanding strings.
Anders Johnsen <skabet@gmail.com>
parents: 100
diff changeset
71 }
89db676fbacb Now able of understanding strings.
Anders Johnsen <skabet@gmail.com>
parents: 100
diff changeset
72
88
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
73 /// Creates a SourceLocation from a File ID
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
74 static SourceLocation fromFileID(uint fileID)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
75 {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
76 assert(fileID < Bits.MaxFileID, "To large fileID");
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
77 SourceLocation res;
100
5f258eaf9517 Loading modules in. Just need to add them to the scope of the "main" Module now.
Anders Johnsen <skabet@gmail.com>
parents: 88
diff changeset
78 res.val = fileID << Bits.FileOffset;
88
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
79 return res;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
80 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
81
148
6ec686d9c87d Fixed some for parsing, and removed a little ugly bug.
Anders Johnsen <skabet@gmail.com>
parents: 106
diff changeset
82 char[] toString()
6ec686d9c87d Fixed some for parsing, and removed a little ugly bug.
Anders Johnsen <skabet@gmail.com>
parents: 106
diff changeset
83 {
6ec686d9c87d Fixed some for parsing, and removed a little ugly bug.
Anders Johnsen <skabet@gmail.com>
parents: 106
diff changeset
84 return Integer.toString(val);
6ec686d9c87d Fixed some for parsing, and removed a little ugly bug.
Anders Johnsen <skabet@gmail.com>
parents: 106
diff changeset
85 }
88
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
86 /**
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
87 Used for invalid/unknown locations. (also the default value, but this is
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
88 more explicit)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
89 **/
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
90 static const SourceLocation Invalid = {val: uint.max};
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
91
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
92 private:
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
93 /**
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
94 A SourceLocation consists of 1 bit, indicating real or virtual, meaning
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
95 if the location points to a file(real), a string mixin or has been
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
96 affected by #line(virtual). That information is saved in the most
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
97 significant bit.
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
98 The rest depends on which type we are dealing with.
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
99 Real:
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
100 13 bits for a file identifier
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
101 18 bits for offset into that "file" (one file may be split)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
102 Virtual:
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
103 Unknown for now. Likely skewed toward more ids and some meta data
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
104 An invalid location is uint.max, this might happen by accident but its
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
105 unlikely.
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
106 **/
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
107 uint val = uint.max;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
108
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
109 /**
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
110 This enum contains some constants that are useful for manipulating
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
111 SourceLocation's, like the size of various “members” of val.
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
112 **/
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
113 static enum Bits {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
114 /// Number of bits used for the offset into file buffers
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
115 FileOffset = 18,
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
116 /// Number of bits used to identify which file buffer this is from
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
117 FileID = 31 - FileOffset,
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
118
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
119 /// Indicates how much can be indexed within one block(2^FileOffset)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
120 MaxFileOffset = 1 << FileOffset,
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
121 MaxFileID = 1 << FileID,
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
122 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
123 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
124
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
125 /// A simple pair used to describe a range in a buffer and not just a point.
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
126 struct SourceRange
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
127 {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
128 SourceLocation begin, end;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
129
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
130 static SourceRange opCall(SourceLocation loc)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
131 {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
132 return SourceRange(loc, loc + 1);
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
133 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
134
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
135 static SourceRange opCall(SourceLocation begin, SourceLocation end)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
136 {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
137 SourceRange res;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
138 res.begin = begin;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
139 res.end = end;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
140 return res;
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
141 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
142
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
143 bool isValid() { return begin.isValid && end.isValid; }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
144 bool isInvalid() { return begin.isInvalid || end.isInvalid; }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
145
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
146 bool isReal() { return begin.isReal && end.isReal; }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
147
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
148 /// Get a new range spanning both ranges
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
149 SourceRange opAdd(SourceRange that)
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
150 {
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
151 assert(this.isValid && that.isValid, "Invalid range");
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
152 return SourceRange(
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
153 this.begin.val < that.begin.val? this.begin : that.begin,
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
154 this.end.val > that.end.val? this.end : that.end);
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
155 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
156 }
eb5b2c719a39 Major change to locations, tokens and expressions.
Anders Halager <halager@gmail.com>
parents:
diff changeset
157