blob: 8a3530d78448f64713962adb8f437af54292f1fe [file] [log] [blame]
// Copyright (c) 2020, 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.
// VMOptions=--intrinsify
// VMOptions=--no_intrinsify
// Verifies that RegExp compilation doesn't crash on a huge source string.
import 'package:expect/expect.dart';
void testBigRegExp(String source) {
try {
var re = new RegExp(source);
Expect.isTrue(re.hasMatch(source));
} catch (e) {
// May throw a compile-time error, but shouldn't crash.
Expect.isTrue(e.toString().contains('RegExp too big'));
}
}
main() {
testBigRegExp("a" * (0x10000 - 128));
testBigRegExp(
String.fromCharCodes(List.generate(0x10000 - 128, (x) => x + 128)));
}