blob: 8261b15f21f2a19a337e0a9da74f63e0db202770 [file] [log] [blame]
hausner@google.combe175c72012-11-09 00:19:43 +00001// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4
floitsch@google.com8fd6d0a2013-04-05 19:43:16 +00005import "package:expect/expect.dart";
6
hausner@google.combe175c72012-11-09 00:19:43 +00007// Test of compile time constant local variables.
8
9const N = 8;
10
11class ConstFoo {
12 final x;
13 const ConstFoo(this.x);
14}
15
16main() {
17 const MIN = 2 - 1;
18 const MAX = N * 2;
19 const MASK = (1 << (MAX - MIN + 1)) - 1; // 65535.
20 Expect.equals(1, MIN);
21 Expect.equals(16, MAX);
22 Expect.equals(65535, MASK);
23 const s = 'MIN = $MIN MAX = $MAX MASK = $MASK';
floitsch@google.com8e6f2382012-11-12 17:19:58 +000024 Expect.identical(s, 'MIN = $MIN MAX = $MAX MASK = $MASK');
hausner@google.combe175c72012-11-09 00:19:43 +000025 Expect.equals("MIN = 1 MAX = 16 MASK = 65535", s);
26 var cf1 = const ConstFoo(MASK);
27 var cf2 = const ConstFoo(s);
28 var cf3 = const ConstFoo('MIN = $MIN MAX = $MAX MASK = $MASK');
floitsch@google.com8e6f2382012-11-12 17:19:58 +000029 Expect.identical(cf2, cf3);
30 Expect.isFalse(identical(cf2, cf1));
hausner@google.combe175c72012-11-09 00:19:43 +000031}
32
33
34