@@ -1691,7 +1691,7 @@ def test_numparam_is_not_local_variables
16911691 end
16921692 end
16931693
1694- def test_implicit_parameters
1694+ def test_implicit_parameters_for_numparams
16951695 x = x = 1
16961696 assert_raise ( NameError ) { binding . implicit_parameter_get ( :x ) }
16971697 assert_raise ( NameError ) { binding . implicit_parameter_defined? ( :x ) }
@@ -1702,23 +1702,29 @@ def test_implicit_parameters
17021702 assert_equal ( "foo" , binding . implicit_parameter_get ( :_1 ) )
17031703 assert_equal ( nil , binding . implicit_parameter_get ( :_5 ) )
17041704 assert_raise ( NameError ) { binding . implicit_parameter_get ( :_6 ) }
1705+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
17051706 assert_equal ( true , binding . implicit_parameter_defined? ( :_1 ) )
17061707 assert_equal ( true , binding . implicit_parameter_defined? ( :_5 ) )
17071708 assert_equal ( false , binding . implicit_parameter_defined? ( :_6 ) )
1709+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
17081710 "bar" . tap do
17091711 assert_equal ( [ ] , binding . implicit_parameters )
17101712 assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
17111713 assert_raise ( NameError ) { binding . implicit_parameter_get ( :_6 ) }
1714+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
17121715 assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
17131716 assert_equal ( false , binding . implicit_parameter_defined? ( :_6 ) )
1717+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
17141718 end
17151719 assert_equal ( [ :_1 , :_2 , :_3 , :_4 , :_5 ] , binding . implicit_parameters )
17161720 assert_equal ( "foo" , binding . implicit_parameter_get ( :_1 ) )
17171721 assert_equal ( nil , binding . implicit_parameter_get ( :_5 ) )
17181722 assert_raise ( NameError ) { binding . implicit_parameter_get ( :_6 ) }
1723+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
17191724 assert_equal ( true , binding . implicit_parameter_defined? ( :_1 ) )
17201725 assert_equal ( true , binding . implicit_parameter_defined? ( :_5 ) )
17211726 assert_equal ( false , binding . implicit_parameter_defined? ( :_6 ) )
1727+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
17221728 end
17231729
17241730 "foo" . tap do
@@ -1727,21 +1733,25 @@ def test_implicit_parameters
17271733 assert_raise ( NameError ) { binding . implicit_parameter_get ( :_6 ) }
17281734 assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
17291735 assert_equal ( false , binding . implicit_parameter_defined? ( :_6 ) )
1736+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
17301737 "bar" . tap do
17311738 _5 and flunk
17321739 assert_equal ( [ :_1 , :_2 , :_3 , :_4 , :_5 ] , binding . implicit_parameters )
17331740 assert_equal ( "bar" , binding . implicit_parameter_get ( :_1 ) )
17341741 assert_equal ( nil , binding . implicit_parameter_get ( :_5 ) )
17351742 assert_raise ( NameError ) { binding . implicit_parameter_get ( :_6 ) }
1743+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
17361744 assert_equal ( true , binding . implicit_parameter_defined? ( :_1 ) )
17371745 assert_equal ( true , binding . implicit_parameter_defined? ( :_5 ) )
17381746 assert_equal ( false , binding . implicit_parameter_defined? ( :_6 ) )
1747+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
17391748 end
17401749 assert_equal ( [ ] , binding . implicit_parameters )
17411750 assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
17421751 assert_raise ( NameError ) { binding . implicit_parameter_get ( :_6 ) }
17431752 assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
17441753 assert_equal ( false , binding . implicit_parameter_defined? ( :_6 ) )
1754+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
17451755 end
17461756 end
17471757
@@ -1786,6 +1796,123 @@ def test_it_is_not_local_variable
17861796 end
17871797 end
17881798
1799+ def test_implicit_parameters_for_it
1800+ "foo" . tap do
1801+ it or flunk
1802+ assert_equal ( [ :it ] , binding . implicit_parameters )
1803+ assert_equal ( "foo" , binding . implicit_parameter_get ( :it ) )
1804+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
1805+ assert_equal ( true , binding . implicit_parameter_defined? ( :it ) )
1806+ assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
1807+ "bar" . tap do
1808+ assert_equal ( [ ] , binding . implicit_parameters )
1809+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
1810+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
1811+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
1812+ assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
1813+ end
1814+ assert_equal ( [ :it ] , binding . implicit_parameters )
1815+ assert_equal ( "foo" , binding . implicit_parameter_get ( :it ) )
1816+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
1817+ assert_equal ( true , binding . implicit_parameter_defined? ( :it ) )
1818+ assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
1819+ end
1820+
1821+ "foo" . tap do
1822+ assert_equal ( [ ] , binding . implicit_parameters )
1823+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
1824+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
1825+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
1826+ assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
1827+ "bar" . tap do
1828+ it or flunk
1829+ assert_equal ( [ :it ] , binding . implicit_parameters )
1830+ assert_equal ( "bar" , binding . implicit_parameter_get ( :it ) )
1831+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
1832+ assert_equal ( true , binding . implicit_parameter_defined? ( :it ) )
1833+ assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
1834+ end
1835+ assert_equal ( [ ] , binding . implicit_parameters )
1836+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
1837+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
1838+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
1839+ assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
1840+ end
1841+ end
1842+
1843+ def test_implicit_parameters_for_it_complex
1844+ "foo" . tap do
1845+ it = "bar"
1846+
1847+ assert_equal ( [ ] , binding . implicit_parameters )
1848+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
1849+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
1850+
1851+ assert_equal ( [ :it ] , binding . local_variables )
1852+ assert_equal ( "bar" , binding . local_variable_get ( :it ) )
1853+ assert_equal ( true , binding . local_variable_defined? ( :it ) )
1854+ end
1855+
1856+ "foo" . tap do
1857+ it or flunk
1858+
1859+ assert_equal ( [ :it ] , binding . implicit_parameters )
1860+ assert_equal ( "foo" , binding . implicit_parameter_get ( :it ) )
1861+ assert_equal ( true , binding . implicit_parameter_defined? ( :it ) )
1862+
1863+ assert_equal ( [ ] , binding . local_variables )
1864+ assert_raise ( NameError ) { binding . local_variable_get ( :it ) }
1865+ assert_equal ( false , binding . local_variable_defined? ( :it ) )
1866+ end
1867+
1868+ "foo" . tap do
1869+ it or flunk
1870+ it = "bar"
1871+
1872+ assert_equal ( [ :it ] , binding . implicit_parameters )
1873+ assert_equal ( "foo" , binding . implicit_parameter_get ( :it ) )
1874+ assert_equal ( true , binding . implicit_parameter_defined? ( :it ) )
1875+
1876+ assert_equal ( [ :it ] , binding . local_variables )
1877+ assert_equal ( "bar" , binding . local_variable_get ( :it ) )
1878+ assert_equal ( true , binding . local_variable_defined? ( :it ) )
1879+ end
1880+ end
1881+
1882+ def test_implicit_parameters_for_it_and_numparams
1883+ "foo" . tap do
1884+ it or flunk
1885+ "bar" . tap do
1886+ _5 and flunk
1887+ assert_equal ( [ :_1 , :_2 , :_3 , :_4 , :_5 ] , binding . implicit_parameters )
1888+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :it ) }
1889+ assert_equal ( "bar" , binding . implicit_parameter_get ( :_1 ) )
1890+ assert_equal ( nil , binding . implicit_parameter_get ( :_5 ) )
1891+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_6 ) }
1892+ assert_equal ( false , binding . implicit_parameter_defined? ( :it ) )
1893+ assert_equal ( true , binding . implicit_parameter_defined? ( :_1 ) )
1894+ assert_equal ( true , binding . implicit_parameter_defined? ( :_5 ) )
1895+ assert_equal ( false , binding . implicit_parameter_defined? ( :_6 ) )
1896+ end
1897+ end
1898+
1899+ "foo" . tap do
1900+ _5 and flunk
1901+ "bar" . tap do
1902+ it or flunk
1903+ assert_equal ( [ :it ] , binding . implicit_parameters )
1904+ assert_equal ( "bar" , binding . implicit_parameter_get ( :it ) )
1905+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_1 ) }
1906+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_5 ) }
1907+ assert_raise ( NameError ) { binding . implicit_parameter_get ( :_6 ) }
1908+ assert_equal ( true , binding . implicit_parameter_defined? ( :it ) )
1909+ assert_equal ( false , binding . implicit_parameter_defined? ( :_1 ) )
1910+ assert_equal ( false , binding . implicit_parameter_defined? ( :_5 ) )
1911+ assert_equal ( false , binding . implicit_parameter_defined? ( :_6 ) )
1912+ end
1913+ end
1914+ end
1915+
17891916 def test_local_variable_set_wb
17901917 assert_ruby_status ( [ ] , <<-'end;' , '[Bug #13605]' , timeout : 30 )
17911918 b = binding
0 commit comments