// Copyright (c) 2019, 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.

// Test that newlines cannot be escaped in strings.

main() {
  // Note: The newline inside a string literal doesn't play nice with the
  // static error updater tool, so if you need to tweak the static error
  // expectations in this test, you may need to do so manually.
  print('Hello, World!\
  //   ^
  // [cfe] Can't find ')' to match '('.
  //    ^
  // [cfe] String starting with ' must end with '.
  //                  ^
  // [analyzer] SYNTACTIC_ERROR.INVALID_UNICODE_ESCAPE_STARTED
  // [analyzer] SYNTACTIC_ERROR.UNTERMINATED_STRING_LITERAL
  // [cfe] The string '\' can't stand alone.
');
// [error column 1, length 3]
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
// [cfe] Expected ';' after this.
// [cfe] String starting with ' must end with '.
//^
// [analyzer] SYNTACTIC_ERROR.UNTERMINATED_STRING_LITERAL
}
// [error column 1, length 1]
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
