mirror of
https://github.com/vim/vim.git
synced 2026-05-06 20:30:02 -04:00
af2c8e256a
And anticipate occasional multibyte line wrapping owing to: > A poorly rendered line may otherwise become wrapped when enough of > spurious U+FFFD (0xEF 0xBF 0xBD) characters claim more columns than > are available (75) and then invalidate line correspondence under test. Observe that for "vim_ex_command.vim" another workaround is chosen: the long line containing an only multibyte character near its EOL is conversely made longer by padding and moving the character to a separate _tail_ part of the wrapped line. That is, the _head_ part of the line is all ASCII characters and the wrapped _tail_ part is a mix of various characters whose total byte count is within bounds. Other unmodified tracked files of interest: java_lambda_expressions.java, java_lambda_expressions_signature.java, java_numbers.java, markdown_conceal.markdown, vim9_generic_function_example_set.vim Also, remove stray U+FFFC (0xEF 0xBF 0xBC) characters. Related to #16559 and #17704. Reference: https://github.com/vim/vim/blob/0fde6aebddef5cb0428e85040994ba45e55cba99/runtime/syntax/testdir/README.txt#L120-L123 closes: #17868 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
53 lines
2.0 KiB
Java
53 lines
2.0 KiB
Java
// VIM_TEST_SETUP highlight link javaConceptKind NonText
|
|
|
|
|
|
|
|
class ContextualKeywordsTests // See JLS, §3.9 Keywords.
|
|
{
|
|
private ContextualKeywordsTests() { throw new Error(); }
|
|
|
|
// ModuleDeclaration: module open.
|
|
void module() { Object module = null; when(); }
|
|
void open() { Object open = null; module(); }
|
|
// ModuleDirective: exports opens provides requires to uses with.
|
|
void exports() { Object exports = null; open(); }
|
|
void opens() { Object opens = null; exports(); }
|
|
void provides() { Object provides = null; opens(); }
|
|
void requires() { Object requires = null; provides(); }
|
|
void to() { Object to = null; requires(); }
|
|
void uses() { Object uses = null; to(); }
|
|
void with() { Object with = null; uses(); }
|
|
// RequiresModifier: transitive.
|
|
void transitive() { Object transitive = null; with(); }
|
|
// LocalVariableType | LambdaParameterType: var.
|
|
void var() { var var = new Object(); transitive(); }
|
|
// YieldStatement: yield (see java_switch.java).
|
|
void yield() { Object yield = null; var(); }
|
|
// RecordDeclaration: record.
|
|
void record() { Object record = null; this.yield(); }
|
|
// Normal{Class,Interface}Declaration: non-sealed permits sealed.
|
|
void permits() { Object permits = null; record(); }
|
|
void sealed() { Object sealed = null; permits(); }
|
|
// Guard: when (see java_switch.java).
|
|
void when() { Object when = null; sealed(); }
|
|
|
|
sealed interface I1 permits C1, I3 { }
|
|
sealed interface I2 permits C1, I3 { }
|
|
non-sealed interface I3 extends I1, I2 { }
|
|
interface I4 extends I3 { }
|
|
|
|
abstract sealed class C1 implements I1, I2 permits C2, C3 { }
|
|
abstract non-sealed class C2 extends C1 { }
|
|
final class C3 extends C1 implements I3 { }
|
|
class C4 extends C2 { }
|
|
|
|
record R() implements I3 { }
|
|
enum E implements I3 { INSTANCE }
|
|
|
|
static <T> I<T> i1() { return (var var) -> var; }
|
|
static <T> I<T> i2() { return (T var) -> var; }
|
|
static <T> I<T> i3() { return (var) -> var; }
|
|
static <T> I<T> i4() { return var -> var; }
|
|
interface I<T> { T i(T i); default I<T> self() { return this; } }
|
|
}
|