authorgravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2017-04-14 16:29:42-07:00
committergravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2017-04-14 16:29:42-07:00
log3a8490f7e95faeff6be9b65c93cd55c8dd11ed1e
tree7dc511d2420bafd547617a6cac1abf914ffed62d
parent3e93796e246f22bad43634682966390c15d7f936

add tests for implicit semicolon. closes #297


1 files changed, 266 insertions(+), 0 deletions(-)

test/run_tests.cpp+266
...@@ -1868,6 +1868,271 @@ export fn entry() {...@@ -1868,6 +1868,271 @@ export fn entry() {
18681868
1869//////////////////////////////////////////////////////////////////////////////1869//////////////////////////////////////////////////////////////////////////////
18701870
1871static void add_parse_error_tests(void) {
1872 add_compile_fail_case("implicit semicolon - block statement", R"SOURCE(
1873export fn entry() {
1874 {}
1875 var good = {};
1876 ({})
1877 var bad = {};
1878}
1879 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1880
1881 add_compile_fail_case("implicit semicolon - block expr", R"SOURCE(
1882export fn entry() {
1883 _ = {};
1884 var good = {};
1885 _ = {}
1886 var bad = {};
1887}
1888 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1889
1890 add_compile_fail_case("implicit semicolon - comptime statement", R"SOURCE(
1891export fn entry() {
1892 comptime {}
1893 var good = {};
1894 comptime ({})
1895 var bad = {};
1896}
1897 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1898
1899 add_compile_fail_case("implicit semicolon - comptime expression", R"SOURCE(
1900export fn entry() {
1901 _ = comptime {};
1902 var good = {};
1903 _ = comptime {}
1904 var bad = {};
1905}
1906 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1907
1908 add_compile_fail_case("implicit semicolon - defer", R"SOURCE(
1909export fn entry() {
1910 defer {}
1911 var good = {};
1912 defer ({})
1913 var bad = {};
1914}
1915 )SOURCE", 1, ".tmp_source.zig:6:5: error: expected token ';', found 'var'");
1916
1917 add_compile_fail_case("implicit semicolon - if statement", R"SOURCE(
1918export fn entry() {
1919 if(true) {}
1920 var good = {};
1921 if(true) ({})
1922 var bad = {};
1923}
1924 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1925
1926 add_compile_fail_case("implicit semicolon - if expression", R"SOURCE(
1927export fn entry() {
1928 _ = if(true) {};
1929 var good = {};
1930 _ = if(true) {}
1931 var bad = {};
1932}
1933 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1934
1935 add_compile_fail_case("implicit semicolon - if-else statement", R"SOURCE(
1936export fn entry() {
1937 if(true) {} else {}
1938 var good = {};
1939 if(true) ({}) else ({})
1940 var bad = {};
1941}
1942 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1943
1944 add_compile_fail_case("implicit semicolon - if-else expression", R"SOURCE(
1945export fn entry() {
1946 _ = if(true) {} else {};
1947 var good = {};
1948 _ = if(true) {} else {}
1949 var bad = {};
1950}
1951 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1952
1953 add_compile_fail_case("implicit semicolon - if-else-if statement", R"SOURCE(
1954export fn entry() {
1955 if(true) {} else if(true) {}
1956 var good = {};
1957 if(true) ({}) else if(true) ({})
1958 var bad = {};
1959}
1960 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1961
1962 add_compile_fail_case("implicit semicolon - if-else-if expression", R"SOURCE(
1963export fn entry() {
1964 _ = if(true) {} else if(true) {};
1965 var good = {};
1966 _ = if(true) {} else if(true) {}
1967 var bad = {};
1968}
1969 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1970
1971 add_compile_fail_case("implicit semicolon - if-else-if-else statement", R"SOURCE(
1972export fn entry() {
1973 if(true) {} else if(true) {} else {}
1974 var good = {};
1975 if(true) ({}) else if(true) ({}) else ({})
1976 var bad = {};
1977}
1978 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1979
1980 add_compile_fail_case("implicit semicolon - if-else-if-else expression", R"SOURCE(
1981export fn entry() {
1982 _ = if(true) {} else if(true) {} else {};
1983 var good = {};
1984 _ = if(true) {} else if(true) {} else {}
1985 var bad = {};
1986}
1987 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1988
1989 add_compile_fail_case("implicit semicolon - if(var) statement", R"SOURCE(
1990export fn entry() {
1991 if(_=foo()) {}
1992 var good = {};
1993 if(_=foo()) ({})
1994 var bad = {};
1995}
1996 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
1997
1998 add_compile_fail_case("implicit semicolon - if(var) expression", R"SOURCE(
1999export fn entry() {
2000 _ = if(_=foo()) {};
2001 var good = {};
2002 _ = if(_=foo()) {}
2003 var bad = {};
2004}
2005 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2006
2007 add_compile_fail_case("implicit semicolon - if(var)-else statement", R"SOURCE(
2008export fn entry() {
2009 if(_=foo()) {} else {}
2010 var good = {};
2011 if(_=foo()) ({}) else ({})
2012 var bad = {};
2013}
2014 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2015
2016 add_compile_fail_case("implicit semicolon - if(var)-else expression", R"SOURCE(
2017export fn entry() {
2018 _ = if(_=foo()) {} else {};
2019 var good = {};
2020 _ = if(_=foo()) {} else {}
2021 var bad = {};
2022}
2023 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2024
2025 add_compile_fail_case("implicit semicolon - if(var)-else-if(var) statement", R"SOURCE(
2026export fn entry() {
2027 if(_=foo()) {} else if(_=foo()) {}
2028 var good = {};
2029 if(_=foo()) ({}) else if(_=foo()) ({})
2030 var bad = {};
2031}
2032 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2033
2034 add_compile_fail_case("implicit semicolon - if(var)-else-if(var) expression", R"SOURCE(
2035export fn entry() {
2036 _ = if(_=foo()) {} else if(_=foo()) {};
2037 var good = {};
2038 _ = if(_=foo()) {} else if(_=foo()) {}
2039 var bad = {};
2040}
2041 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2042
2043 add_compile_fail_case("implicit semicolon - if(var)-else-if(var)-else statement", R"SOURCE(
2044export fn entry() {
2045 if(_=foo()) {} else if(_=foo()) {} else {}
2046 var good = {};
2047 if(_=foo()) ({}) else if(_=foo()) ({}) else ({})
2048 var bad = {};
2049}
2050 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2051
2052 add_compile_fail_case("implicit semicolon - if(var)-else-if(var)-else expression", R"SOURCE(
2053export fn entry() {
2054 _ = if(_=foo()) {} else if(_=foo()) {} else {};
2055 var good = {};
2056 _ = if(_=foo()) {} else if(_=foo()) {} else {}
2057 var bad = {};
2058}
2059 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2060
2061 add_compile_fail_case("implicit semicolon - try statement", R"SOURCE(
2062export fn entry() {
2063 try (_ = foo()) {}
2064 var good = {};
2065 try (_ = foo()) ({})
2066 var bad = {};
2067}
2068 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2069
2070 add_compile_fail_case("implicit semicolon - try expression", R"SOURCE(
2071export fn entry() {
2072 _ = try (_ = foo()) {};
2073 var good = {};
2074 _ = try (_ = foo()) {}
2075 var bad = {};
2076}
2077 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2078
2079 add_compile_fail_case("implicit semicolon - while statement", R"SOURCE(
2080export fn entry() {
2081 while(true) {}
2082 var good = {};
2083 while(true) ({})
2084 var bad = {};
2085}
2086 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2087
2088 add_compile_fail_case("implicit semicolon - while expression", R"SOURCE(
2089export fn entry() {
2090 _ = while(true) {};
2091 var good = {};
2092 _ = while(true) {}
2093 var bad = {};
2094}
2095 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2096
2097 add_compile_fail_case("implicit semicolon - while-continue statement", R"SOURCE(
2098export fn entry() {
2099 while(true;{}) {}
2100 var good = {};
2101 while(true;{}) ({})
2102 var bad = {};
2103}
2104 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2105
2106 add_compile_fail_case("implicit semicolon - while-continue expression", R"SOURCE(
2107export fn entry() {
2108 _ = while(true;{}) {};
2109 var good = {};
2110 _ = while(true;{}) {}
2111 var bad = {};
2112}
2113 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2114
2115 add_compile_fail_case("implicit semicolon - for statement", R"SOURCE(
2116export fn entry() {
2117 for(foo()) {}
2118 var good = {};
2119 for(foo()) ({})
2120 var bad = {};
2121}
2122 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2123
2124 add_compile_fail_case("implicit semicolon - for expression", R"SOURCE(
2125export fn entry() {
2126 _ = for(foo()) {};
2127 var good = {};
2128 _ = for(foo()) {}
2129 var bad = {};
2130}
2131 )SOURCE", 1, ".tmp_source.zig:6:5: error: invalid token: 'var'");
2132}
2133
2134//////////////////////////////////////////////////////////////////////////////
2135
1871static void add_debug_safety_test_cases(void) {2136static void add_debug_safety_test_cases(void) {
1872 add_debug_safety_case("calling panic", R"SOURCE(2137 add_debug_safety_case("calling panic", R"SOURCE(
1873pub fn panic(message: []const u8) -> noreturn {2138pub fn panic(message: []const u8) -> noreturn {
...@@ -2624,6 +2889,7 @@ int main(int argc, char **argv) {...@@ -2624,6 +2889,7 @@ int main(int argc, char **argv) {
2624 add_compiling_test_cases();2889 add_compiling_test_cases();
2625 add_debug_safety_test_cases();2890 add_debug_safety_test_cases();
2626 add_compile_failure_test_cases();2891 add_compile_failure_test_cases();
2892 add_parse_error_tests();
2627 add_parseh_test_cases();2893 add_parseh_test_cases();
2628 add_self_hosted_tests();2894 add_self_hosted_tests();
2629 add_std_lib_tests();2895 add_std_lib_tests();