comparison src/testdir/test_vim9_class.vim @ 32764:d35204b890af v9.0.1701

patch 9.0.1701: vim9 crash when class member overridden Commit: https://github.com/vim/vim/commit/57a02ccf4c75a6abb270194c90be926d5221b3ce Author: Yegappan Lakshmanan <yegappan@yahoo.com> Date: Sun Aug 13 10:19:38 2023 +0200 patch 9.0.1701: vim9 crash when class member overridden Problem: vim9 crash when class member overridden Solution: Use method_count field instead closes: #12676 closes: #12677 Signed-off-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
author Christian Brabandt <cb@256bit.org>
date Sun, 13 Aug 2023 10:30:07 +0200
parents 695b50472e85
children 0dc750a24875
comparison
equal deleted inserted replaced
32763:0d152c1c6972 32764:d35204b890af
1872 END 1872 END
1873 v9.CheckScriptSuccess(lines) 1873 v9.CheckScriptSuccess(lines)
1874 unlet g:result 1874 unlet g:result
1875 enddef 1875 enddef
1876 1876
1877 " The following test used to crash Vim (Github issue #12676)
1878 def Test_extends_method_crashes_vim()
1879 var lines =<< trim END
1880 vim9script
1881
1882 class Observer
1883 endclass
1884
1885 class Property
1886 this.value: any
1887
1888 def Set(v: any)
1889 if v != this.value
1890 this.value = v
1891 endif
1892 enddef
1893
1894 def Register(observer: Observer)
1895 enddef
1896 endclass
1897
1898 class Bool extends Property
1899 this.value: bool
1900 endclass
1901
1902 def Observe(obj: Property, who: Observer)
1903 obj.Register(who)
1904 enddef
1905
1906 var p = Bool.new(false)
1907 var myObserver = Observer.new()
1908
1909 Observe(p, myObserver)
1910
1911 p.Set(true)
1912 END
1913 v9.CheckScriptSuccess(lines)
1914 enddef
1877 1915
1878 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker 1916 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker