[vim/vim] Add support for generic class, interfaces, etc. (PR #18910)

72 views
Skip to first unread message

Yegappan Lakshmanan

unread,
Dec 12, 2025, 1:22:29 AM12/12/25
to vim/vim, Subscribed

This is a work in progress. Extending a generic class or interface is not yet supported.


You can view, comment on, or merge this pull request online at:

  https://github.com/vim/vim/pull/18910

Commit Summary

  • 2a4f394 Add support for generic class, interfaces, etc.

File Changes

(21 files)

Patch Links:


Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910@github.com>

Yegappan Lakshmanan

unread,
Dec 12, 2025, 2:08:17 AM12/12/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 4b7d38f Use a different viarable name for gfatab


View it on GitHub or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/2a4f394515720bd65e67e0bbbc38d2880c7f1d44/after/4b7d38f36f4bf351f07adf0b2145d631b2f077a2@github.com>

Yegappan Lakshmanan

unread,
Dec 12, 2025, 2:14:37 AM12/12/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 8ab6ff4 Remove the test using an extra space after a type

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/a7209e3d983878b665dadbfd408c44abc74a6c69/after/8ab6ff4c73ce98426cc9a9143794a47be8abbbe7@github.com>

Yegappan Lakshmanan

unread,
Dec 12, 2025, 2:34:31 AM12/12/25
to vim/vim, Push

@yegappan pushed 1 commit.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/67d71ceff0be174f41d17ab845d5c3132dfb5780/after/5ac288409b678dfad69ec028bbf79da61a4f51c1@github.com>

Yegappan Lakshmanan

unread,
Dec 12, 2025, 12:06:01 PM12/12/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • ea0c0e0 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/fd9aa825ae797fb2cbea847d5181aaca76cd3ba0/after/ea0c0e0e9c84b0d1cb216fc626c8868e07a746f2@github.com>

Yegappan Lakshmanan

unread,
Dec 13, 2025, 6:32:34 PM12/13/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • b22d3e3 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/ea0c0e0e9c84b0d1cb216fc626c8868e07a746f2/after/b22d3e311d866ddfb79c42b3f3a603c41859d6fc@github.com>

Yegappan Lakshmanan

unread,
Dec 14, 2025, 12:17:26 PM12/14/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 971ad49 Add support for a generic class extending another generic class

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/b22d3e311d866ddfb79c42b3f3a603c41859d6fc/after/971ad49d4354159b92a5026a3c1b960f552d1d0d@github.com>

Yegappan Lakshmanan

unread,
Dec 14, 2025, 12:17:53 PM12/14/25
to vim/vim, Push

@yegappan pushed 2 commits.

  • 7549b44 Add support for generic class, interfaces, etc.
  • c8c8a0b Add support for a generic class extending another generic class

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/971ad49d4354159b92a5026a3c1b960f552d1d0d/after/c8c8a0b8cc3fc6b4eead175676e8c07b5ac52dc1@github.com>

Yegappan Lakshmanan

unread,
Dec 15, 2025, 11:33:52 PM12/15/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 64e9eba Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/0256a23305992b6f330f87d5af2b2ef9c7899c57/after/64e9eba9f9b8629be03077ac5ef3247894b83c74@github.com>

Yegappan Lakshmanan

unread,
Dec 17, 2025, 12:14:56 AM12/17/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • d3464fe Fix sync conflicts and errors

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/64e9eba9f9b8629be03077ac5ef3247894b83c74/after/d3464fe8b95095ba69b63761ff01bef866f92e6f@github.com>

Yegappan Lakshmanan

unread,
Dec 17, 2025, 12:15:14 AM12/17/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 088d924 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/d3464fe8b95095ba69b63761ff01bef866f92e6f/after/088d9243242f0012118677e25e5a9b5834e16653@github.com>

Yegappan Lakshmanan

unread,
Dec 17, 2025, 10:29:39 AM12/17/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • bc1f99a Use class_name.string to get the class name

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/088d9243242f0012118677e25e5a9b5834e16653/after/bc1f99afbb7ef84df0a6eb06fe5a5bd70687189f@github.com>

Yegappan Lakshmanan

unread,
Dec 17, 2025, 11:43:40 PM12/17/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 8c63d9f Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/4786ad1119711ffad7d63afa31c0613198b7be08/after/8c63d9f17230784fb0859a282c217b07fdf95c1d@github.com>

Yegappan Lakshmanan

unread,
Dec 19, 2025, 12:03:37 PM12/19/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • a887860 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/8c63d9f17230784fb0859a282c217b07fdf95c1d/after/a8878609951d5cbdb3c8cb7753edd982bf92cd15@github.com>

Yegappan Lakshmanan

unread,
Dec 21, 2025, 10:46:22 AM12/21/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • cbca365 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/a8878609951d5cbdb3c8cb7753edd982bf92cd15/after/cbca365c57f8ab6531a480a3a68d5fea6c5d0f59@github.com>

Yegappan Lakshmanan

unread,
Dec 21, 2025, 11:07:29 AM12/21/25
to vim/vim, Push

@yegappan pushed 1 commit.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/cbca365c57f8ab6531a480a3a68d5fea6c5d0f59/after/bbbb4a9cf316428dbf85af75babdb4f961c71c6b@github.com>

Yegappan Lakshmanan

unread,
Dec 21, 2025, 3:29:52 PM12/21/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 475364b Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/1f814972ebaadcd09e42ad335e81dffa263c7eef/after/475364bb8e7ea782fd3e3012dbfe35e6f8752ae9@github.com>

Yegappan Lakshmanan

unread,
Dec 23, 2025, 12:03:06 AM12/23/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • dfb9436 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/475364bb8e7ea782fd3e3012dbfe35e6f8752ae9/after/dfb943638448b508ca4ee518bf4f4d45ebb92a69@github.com>

Yegappan Lakshmanan

unread,
Dec 27, 2025, 12:14:59 AM12/27/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 2684b0f Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/dfb943638448b508ca4ee518bf4f4d45ebb92a69/after/2684b0f668e16bb90ce4fbadf0cabdf550c9be7a@github.com>

Yegappan Lakshmanan

unread,
Dec 27, 2025, 12:16:54 PM12/27/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 3cf7c68 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/2684b0f668e16bb90ce4fbadf0cabdf550c9be7a/after/3cf7c68fb7095bd63f2654ad5447a294dc7b64d9@github.com>

Yegappan Lakshmanan

unread,
Dec 28, 2025, 2:44:32 PM12/28/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • ed8249c Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/3cf7c68fb7095bd63f2654ad5447a294dc7b64d9/after/ed8249cbf033d9bcc66fa1b538f0013a411daf25@github.com>

Yegappan Lakshmanan

unread,
Dec 30, 2025, 9:12:29 PM12/30/25
to vim/vim, Push

@yegappan pushed 1 commit.

  • 12f2853 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/ed8249cbf033d9bcc66fa1b538f0013a411daf25/after/12f285304f7935853c9d8206029567a484c20f60@github.com>

Yegappan Lakshmanan

unread,
Jan 1, 2026, 4:32:18 PMJan 1
to vim/vim, Push

@yegappan pushed 1 commit.

  • ee577ae Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/12f285304f7935853c9d8206029567a484c20f60/after/ee577ae2b803d4efc9d341b21052617721a238b3@github.com>

Yegappan Lakshmanan

unread,
Jan 2, 2026, 11:52:00 AMJan 2
to vim/vim, Push

@yegappan pushed 1 commit.

  • cb27d58 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/ee577ae2b803d4efc9d341b21052617721a238b3/after/cb27d58ae89dfa40f550c47319a9ca20a65e7f3c@github.com>

Yegappan Lakshmanan

unread,
Jan 4, 2026, 8:36:00 PMJan 4
to vim/vim, Push

@yegappan pushed 1 commit.

  • 6096f89 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/cb27d58ae89dfa40f550c47319a9ca20a65e7f3c/after/6096f890cbbe31f0769736f50b572ea7e26b0280@github.com>

Yegappan Lakshmanan

unread,
Jan 6, 2026, 10:52:22 AMJan 6
to vim/vim, Push

@yegappan pushed 1 commit.

  • e124967 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/6096f890cbbe31f0769736f50b572ea7e26b0280/after/e124967697d4750ab44a28f2eecfa7f7234762d3@github.com>

Yegappan Lakshmanan

unread,
Jan 6, 2026, 1:20:16 PMJan 6
to vim/vim, Push

@yegappan pushed 1 commit.

  • 7c9bda0 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/e124967697d4750ab44a28f2eecfa7f7234762d3/after/7c9bda04ffb1c6463ab31983a67419c4d76fba61@github.com>

Yegappan Lakshmanan

unread,
Jan 8, 2026, 12:24:12 AMJan 8
to vim/vim, Push

@yegappan pushed 1 commit.

  • 2d373a5 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/7c9bda04ffb1c6463ab31983a67419c4d76fba61/after/2d373a57a1163267d3f45741036ad293eda99383@github.com>

Yegappan Lakshmanan

unread,
Jan 8, 2026, 4:18:54 PMJan 8
to vim/vim, Push

@yegappan pushed 1 commit.

  • 667159f Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/2d373a57a1163267d3f45741036ad293eda99383/after/667159f1682e3c931cb8b17a2f46785aad427549@github.com>

Yegappan Lakshmanan

unread,
Jan 8, 2026, 6:03:58 PMJan 8
to vim/vim, Push

@yegappan pushed 1 commit.

  • 570277d Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/667159f1682e3c931cb8b17a2f46785aad427549/after/570277d81d38a1bb85a5f4537f5438621cd44417@github.com>

Yegappan Lakshmanan

unread,
Jan 9, 2026, 3:19:20 PMJan 9
to vim/vim, Push

@yegappan pushed 1 commit.

  • 4d75459 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/570277d81d38a1bb85a5f4537f5438621cd44417/after/4d7545911af44587e40d6bc13d49ff8de468f089@github.com>

Aliaksei Budavei

unread,
Jan 9, 2026, 5:26:57 PMJan 9
to vim/vim, Subscribed
zzzyxwvut left a comment (vim/vim#18910)

Thank you.

This is a much-desired language feature and a much-welcome
complement to generic functions, as it offers a much greater
degree of expressiveness for type abstraction.

I have been toying with builds from this PR for some time.
A couple things don't yet work (#4d7545):

  • Many-parameter parameterised types cannot be currently
    used in LHS of variable declarations and as type
    arguments.
example_a.vim
vim9script

class Single<T>
    final X: T

    def new(this.X)
    enddef

    def ToTuple(): tuple<T, ...list<any>>
        return (this.X, )
    enddef
endclass

class Pair<T, U> extends Single<T>
    final Y: U

    def new(this.X, this.Y)
    enddef

    def ToTuple(): tuple<T, U, ...list<any>>
        return (this.X, this.Y)
    enddef
endclass

def OneTuple<T>(X: T): tuple<T>
    return (X, )
enddef

def TwoTuple<T, U>(X: T, Y: U): tuple<T, U>
    return (X, Y)
enddef

var s1: Single<number> = Single<number>.new(1)
echo 1 == s1.X

const s2: tuple<Single<Single<number>>> = OneTuple<Single<Single<number>>>(
    Single<Single<number>>.new(
        Single<number>.new(1)))
echo 1 == s2[0].X.X

type NumberNumberPair = Pair<number, number>

#### FIXME: E488

try 
    var p: Pair<number, number> = Pair<number, number>.new(1, 2)
    echo 3 == p.X + p.Y
catch /\<E488:/
    echo v:exception
    var p: NumberNumberPair = Pair<number, number>.new(1, 2)
    echo 3 == p.X + p.Y
endtry

#### FIXME: E15

try
    echo Pair<Pair<number, number>, Pair<number, number>>.new(
        Pair<number, number>.new(1, 2),
        Pair<number, number>.new(1, 2)).X
catch /\<E15:/
    echo v:exception
    echo (1, 2) == Pair<NumberNumberPair, NumberNumberPair>.new(
        Pair<number, number>.new(1, 2),
        Pair<number, number>.new(1, 2)).X.ToTuple()
endtry

try
    echo TwoTuple<Pair<number, number>, Pair<number, number>>(
        Pair<number, number>.new(1, 2),
        Pair<number, number>.new(1, 2)).X
catch /\<E15:/
    echo v:exception
    echo (1, 2) == TwoTuple<NumberNumberPair, NumberNumberPair>(
        Pair<number, number>.new(1, 2),
        Pair<number, number>.new(1, 2))[0].ToTuple()
endtry
  • Type variables are allowed in signatures of builtin object
    methods (aka empty, len, and string):
example_b.vim
vim9script

class String
    final _value: string

    def new(this._value)
    enddef

    def string(): string
        return this._value
    enddef
endclass

class Box<T>
    final _value: T

    def new(this._value)
    enddef

    # FIXME: Wrong signature!
    def string(): T
        return this._value
    enddef

    # FIXME: Wrong signature!
    def len(): T
        return this._value
    enddef

    # FIXME: Wrong signature!
    def empty(): T
        return this._value
    enddef
endclass

echo Box<String>.new(String.new('hello')).len()
echo Box<String>.new(String.new('hello')).empty()
echo Box<String>.new(String.new('hello')).string()

# FIXME: Possibly see garbage and (possibly delayed) SEGV.
echo Box<String>.new(String.new('hello'))


Reply to this email directly, view it on GitHub.
You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/c3730788239@github.com>

Yegappan Lakshmanan

unread,
Jan 9, 2026, 10:14:06 PMJan 9
to vim/vim, Push

@yegappan pushed 1 commit.

  • eb73576 Check the type of builtin function args and return value in a cloned class

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/4d7545911af44587e40d6bc13d49ff8de468f089/after/eb73576b9d161a6b13c1c4de35c059cec6e88b4b@github.com>

Yegappan Lakshmanan

unread,
Jan 9, 2026, 10:17:41 PMJan 9
to vim/vim, Subscribed
yegappan left a comment (vim/vim#18910)

Thank you.

This is a much-desired language feature and a much-welcome complement to generic functions, as it offers a much greater degree of expressiveness for type abstraction.

I have been toying with builds from this PR for some time. A couple things don't yet work (#4d7545):

Thanks for trying out the PR and reporting the problems. This helps a lot.

  • Type variables are allowed in signatures of builtin object
    methods (aka empty, len, and string):

I have fixed this issue in the latest updated PR. I will look into the first issue.

Thanks,
Yegappan


Reply to this email directly, view it on GitHub.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/c3731729089@github.com>

Yegappan Lakshmanan

unread,
Jan 10, 2026, 5:03:36 PMJan 10
to vim/vim, Push

@yegappan pushed 1 commit.

  • e5c2016 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/50421b16cb811c6b544d60001011acebc9c672ce/after/e5c201636e14c2cd3fcfb11582b6e8127fb3e8d0@github.com>

Yegappan Lakshmanan

unread,
Jan 11, 2026, 9:46:05 PMJan 11
to vim/vim, Push

@yegappan pushed 1 commit.

  • 72d518c Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/e5c201636e14c2cd3fcfb11582b6e8127fb3e8d0/after/72d518c3e627079e8992313640011d0dd2f3a5c0@github.com>

Yegappan Lakshmanan

unread,
Jan 11, 2026, 10:05:15 PMJan 11
to vim/vim, Push

@yegappan pushed 1 commit.

  • ce23c5f Skip generic types only in a vim9script

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/72d518c3e627079e8992313640011d0dd2f3a5c0/after/ce23c5fd57107c68a3828cc0902cff0c3da861d6@github.com>

Yegappan Lakshmanan

unread,
Jan 11, 2026, 10:38:44 PMJan 11
to vim/vim, Push

@yegappan pushed 1 commit.

  • 2838469 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/a75d47e436650e40734311f00ddf9a1a10bc5b37/after/2838469ba92294e4d551ed601f4bd3ed00b8f47b@github.com>

Yegappan Lakshmanan

unread,
Jan 11, 2026, 11:08:12 PMJan 11
to vim/vim, Subscribed
yegappan left a comment (vim/vim#18910)

Thank you.
This is a much-desired language feature and a much-welcome complement to generic functions, as it offers a much greater degree of expressiveness for type abstraction.
I have been toying with builds from this PR for some time. A couple things don't yet work (#4d7545):

Thanks for trying out the PR and reporting the problems. This helps a lot.

  • Type variables are allowed in signatures of builtin object
    methods (aka empty, len, and string):

I have fixed this issue in the latest updated PR. I will look into the first issue.

@zzzyxwvut: The latest updated PR addresses the issue seen with the code in example_a.vim.
Can you try the latest PR?


Reply to this email directly, view it on GitHub.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/c3736811550@github.com>

Yegappan Lakshmanan

unread,
Jan 13, 2026, 12:33:06 AMJan 13
to vim/vim, Push

@yegappan pushed 1 commit.

  • d42c99b Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/2838469ba92294e4d551ed601f4bd3ed00b8f47b/after/d42c99b49757832c8d27c3ce99c50c85548ffb86@github.com>

Aliaksei Budavei

unread,
Jan 13, 2026, 7:05:17 PMJan 13
to vim/vim, Subscribed
zzzyxwvut left a comment (vim/vim#18910)

Thank you for addressing the reported shortcomings.

Recursive generic type declarations are currently rejected:

example_c.vim
vim9script

interface Copiable<T>
    var value: T

#### FIXME: E1010
    def Copy(): Copiable<T>
endinterface

class NumRef implements Copiable<number>
    const value: number

    def new(this.value)
    enddef

    # Assume return value covariance.
    def Copy(): NumRef
        return NumRef.new(this.value)
    enddef
endclass

class StrRef implements Copiable<string>
    const value: string

    def new(this.value)
    enddef

    def Copy(): Copiable<string>
        return StrRef.new(this.value)
    enddef
endclass

echo 0 == NumRef.new(0).Copy().value
echo "" == StrRef.new("").Copy().value

I understand that type variance is still being researched;
I can't find any related test cases.


Reply to this email directly, view it on GitHub.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/c3747083214@github.com>

Yegappan Lakshmanan

unread,
Jan 16, 2026, 10:24:28 PMJan 16
to vim/vim, Push

@yegappan pushed 1 commit.

  • 0372fef Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/d42c99b49757832c8d27c3ce99c50c85548ffb86/after/0372fef36e9d48f02f04d84ea73b5e5dea7292be@github.com>

Aliaksei Budavei

unread,
Jan 31, 2026, 5:19:39 PM (2 days ago) Jan 31
to vim/vim, Subscribed
zzzyxwvut left a comment (vim/vim#18910)

There is a general limitation in not permitting the use of
type variables with parameterised return types and object
variable types (cf. the previously reported issue about
recursive generic types.)

example_d.vim
vim9script

class Ref<T>
    var x: T
endclass

class Pair<T, U>
    # FIXME: E1010
    static def Make<A, B>(X: A, Y: B): Pair<A, B>
        return Pair<A, B>.new(X, Y)
    enddef

    # FIXME: E1010
    def Copy(): Pair<T, U>
        return Pair<T, U>.new(this.X, this.Y)
    enddef

    def new(this.X, this.Y)
    enddef

    public const X: T
    public const Y: U
endclass

# FIXME: E1012
var p: Pair<bool, bool> = Pair<bool, bool>.Make<bool, bool>(true, false)

# FIXME: E1570
echo Pair<bool, bool>.Make<bool, bool>(false, true).Copy()

interface RefRef<T>
    # FIXME: E1010
    var x: Ref<T>
endinterface

# FIXME: E1010
def MakeRef<T>(): Ref<T>
    return Ref<T>.new()
enddef


Reply to this email directly, view it on GitHub.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/c3829464782@github.com>

Yegappan Lakshmanan

unread,
Feb 1, 2026, 10:42:05 PM (21 hours ago) Feb 1
to vim/vim, Push

@yegappan pushed 1 commit.

  • f3deb93 Add support for generic class, interfaces, etc.

You are receiving this because you are subscribed to this thread.Message ID: <vim/vim/pull/18910/before/0372fef36e9d48f02f04d84ea73b5e5dea7292be/after/f3deb9372ce085d83bfaad24c3b0938b312b73dd@github.com>

Reply all
Reply to author
Forward
0 new messages