When passing a string literal to any of the legacy constructors that
take just a plain pointer to a UTF-16 string it becomes necessary to
iterate through the string to find its length, even though this length
was known to the compiler (which just has no way of passing it on to the
constructor).
But when calling the new templated string view constructor instead it
becomes possible for the compiler to use the known length of a string
literal to directly create a string view of the correct size and pass
this on to the constructor.
By replacing the legacy constructors with the new constructor this is
made the default behaviour.
Calendar fuzzer test too many operations and cause timeout
which does not suerface the real issue. Limit the test data size to 100
instead of 1000 instead.
Modify ICU4C and ICU4J test readers to handle all tests
Add `ignoreJava` and `ignoreCpp` properties to tests where needed
Includes parser bug fixes:
ICU4J: require a complex-body after declarations
ICU4J: Correctly parse the complex body after an unsupported statement
ICU4J: Handle date params in tests and remove default params for tests
ICU4J: Handle decimal params in tests
ICU4J: Require whitespace before variable/literal in reserved annotation
ICU4J: Require whitespace between options
ICU4J: Require a variable-expression in an .input declaration
ICU4J: don't require space between last key and pattern in variant
ICU4J: don't require space between selectors
ICU4J: allow whitespace after '=' in option
ICU4J: parse escape sequences in quoted literals according to grammar
ICU4J: allow whitespace within markup after attributes list
These optional output parameters weren't used when these function were
originally added so they were most likely included just in case someone
would want to use them in the future, but that was 10 years ago now and
they still haven't been used yet, so it's unlikely that they'll be used
in the foreseeable future and call sites as well as the implementation
can instead be simplified by removing them.
The tool pkgdata uses snprintf() to build the strings of the commands that
will execute later during the install process. But the maximum size of this
buffers is not enough when there is a long path.
This has caused issues on some CI systems that use very long paths, causing
the install process to produce a wrong result.
The maximum path on Linux is 4096 (defined as PATH_MAX at <linux/limits.h>)
So the size of SMALL_BUFFER_MAX_SIZE should be 4096 to avoid errors related
to truncated paths.