// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import "package:expect/expect.dart"; // Test inlining of assignments in parameter passing. If [StringScanner.charAt] // is inlined, the argument expression `++byteOffset` should not be duplicated. class StringScanner { final String string; int byteOffset = -1; StringScanner(this.string); int nextByte() => charAt(++byteOffset); int charAt(index) => (string.length > index) ? string.codeUnitAt(index) : -1; } void main() { var scanner = new StringScanner('az9'); Expect.equals(0x61, scanner.nextByte()); // Expect a. Expect.equals(0x7A, scanner.nextByte()); // Expect z. Expect.equals(0x39, scanner.nextByte()); // Expect 9. Expect.equals(-1, scanner.nextByte()); }