Files
vim/runtime/syntax/testdir/input/java_methods_indent2.java
Aliaksei Budavei 159d392427 runtime(java): Complement the recognition of type parameter sections
In addition to matching type parameter sections of generic
classes and records and interfaces, match such sections of
generic methods and constructors.  As before, opt for it by
defining "g:java_highlight_generics"; the diamond form still
does not qualify for this kind of recognition.

And make section patterns agree with one another in syntax
items.

References:
https://docs.oracle.com/javase/specs/jls/se21/html/jls-4.html#jls-4.5
https://docs.oracle.com/javase/specs/jls/se21/html/jls-8.html#jls-8.4.4
https://docs.oracle.com/javase/specs/jls/se21/html/jls-8.html#jls-8.8.4

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-06-23 20:02:14 +02:00

113 lines
3.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// VIM_TEST_SETUP let g:java_highlight_functions = 'indent2'
// VIM_TEST_SETUP let g:java_highlight_generics = 1
// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
abstract class Indent2MethodsTests
{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
// TYPES.
record Τʬ<α>(α a) { }
enum E
{
A("a"), B("b"), C("c"), D("d"),
E("e"), F("f"), G("g"), H("h");
final String s;
private E(String s) { this.s = s; }
}
@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
@java.lang.annotation.Repeatable(Tɐggablɘs.class)
@interface Tɐggablɘ
{
String[] value() default "";
}
@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
@interface Tɐggablɘs
{
Tɐggablɘ[] value();
}
interface Stylable<Α>
{
default void ascii$0_() { }
default Α μʭʭ$0_() { return null; }
}
// FIELDS.
private static final Class<?> CLASS_LOCK = classLock();
private final Object instanceLock = new Object();
// CONSTRUCTORS.
@Tɐggablɘ @Tɐggablɘ protected Indent2MethodsTests() { }
<T extends Comparable<T>> Indent2MethodsTests(T t, Void v) { }
private <T extends Comparable<T>> Indent2MethodsTests(T t) { }
// METHODS.
@Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
);
@Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
@SuppressWarnings("bespoke") β b);
@Tɐggablɘ private native void ascii$1_(/*////////////*/);
@Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
java.util.function.Function<β, Τʬ<α>[]> ƒ);
void Ascii$2_() { }
<T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
static final native synchronized void ascii$98_();
static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
java.util.function.Function<β, Τʬ<α>[][]> ƒ);
@SuppressWarnings("strictfp")
protected static final synchronized strictfp void ascii$99_()
{ ascii$98_(); }
@SuppressWarnings("strictfp")
protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
java.util.function.Function<β, Τʬ<α>[][]> ƒ)
{
return
Indent2MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
}
public static Class<?> classLock() { return Indent2MethodsTests.class; }
public <E extends Comparable<? super E>> java.util.List<E> filter(
java.util.function.Predicate<? super E> filter,
java.util.List<? extends E> cs)
{
return cs.stream().filter(filter)
.collect(java.util.stream.Collectors.toUnmodifiableList());
}
@Override @SuppressWarnings("cast")
public String toString() { return (String) "Indent2MethodsTests"; }
}
enum E2
{
@SuppressWarnings("bespoke") A("a"),
B("b"
/*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
C("c", new Thread(
() -> {
})), D("d", (java.util.function.BooleanSupplier) () -> true),
E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
transient String name = "";
@Override public String toString() { return this.name; }
}), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
G("g"), @Deprecated H("h");
final String s;
private E2(String s) { this.s = s; }
private <δ> E2(String s, δ dummy) { this(s); }
@Override public String toString() { return name().toUpperCase(); }
}