From fa11ee9d6bb24b30b2b0bb2be8f0a55a8078f504 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Wed, 12 Feb 2025 10:36:27 +0200 Subject: [PATCH] tests: add more tests for importing @keyword as function names, and for enums with c++ keyword field names --- ...num_field_name_same_as_cpp_keywords_test.v | 13 ++ .../importing_keywords_works_test.v | 51 ++++++ .../project_importing_v_keywords/mymod/f.v | 173 ++++++++++++++++++ .../tests/project_importing_v_keywords/v.mod | 0 4 files changed, 237 insertions(+) create mode 100644 vlib/v/tests/enums/enum_field_name_same_as_cpp_keywords_test.v create mode 100644 vlib/v/tests/project_importing_v_keywords/importing_keywords_works_test.v create mode 100644 vlib/v/tests/project_importing_v_keywords/mymod/f.v create mode 100644 vlib/v/tests/project_importing_v_keywords/v.mod diff --git a/vlib/v/tests/enums/enum_field_name_same_as_cpp_keywords_test.v b/vlib/v/tests/enums/enum_field_name_same_as_cpp_keywords_test.v new file mode 100644 index 00000000000000..36be429f0c97ac --- /dev/null +++ b/vlib/v/tests/enums/enum_field_name_same_as_cpp_keywords_test.v @@ -0,0 +1,13 @@ +enum MyEnum { + catch + class + dynamic_cast + static_cast + operator + virtual +} + +fn test_cpp_keywords_used_as_enum_values() { + e := MyEnum.class + assert e.str() == 'class' +} diff --git a/vlib/v/tests/project_importing_v_keywords/importing_keywords_works_test.v b/vlib/v/tests/project_importing_v_keywords/importing_keywords_works_test.v new file mode 100644 index 00000000000000..2d738dabe0a5a5 --- /dev/null +++ b/vlib/v/tests/project_importing_v_keywords/importing_keywords_works_test.v @@ -0,0 +1,51 @@ +import mymod { @as, @asm, @assert, @atomic, @break, @const, @continue, @defer, @else, @enum, @false, @fn, @for, @go, @goto, @if, @implements, @import, @in, @interface, @is, @isreftype, @lock, @match, @module, @mut, @or, @pub, @return, @rlock, @select, @shared, @sizeof, @spawn, @static, @struct, @true, @type, @typeof, @union, @unsafe, @volatile } + +fn call_keywords() { + @as() + @asm() + @assert() + @atomic() + @break() + @const() + @continue() + @defer() + @else() + @enum() + @false() + @fn() + @for() + @go() + @goto() + @if() + @implements() + @import() + @in() + @interface() + @is() + @isreftype() + @lock() + @match() + @module() + @mut() + @or() + @pub() + @return() + @rlock() + @select() + @shared() + @sizeof() + @spawn() + @static() + @struct() + @true() + @type() + @typeof() + @union() + @unsafe() + @volatile() +} + +fn test_main() { + call_keywords() + assert true +} diff --git a/vlib/v/tests/project_importing_v_keywords/mymod/f.v b/vlib/v/tests/project_importing_v_keywords/mymod/f.v new file mode 100644 index 00000000000000..0b356b99651a7e --- /dev/null +++ b/vlib/v/tests/project_importing_v_keywords/mymod/f.v @@ -0,0 +1,173 @@ +module mymod + +pub fn @as() { + println(@LOCATION) +} + +pub fn @asm() { + println(@LOCATION) +} + +pub fn @assert() { + println(@LOCATION) +} + +pub fn @atomic() { + println(@LOCATION) +} + +pub fn @break() { + println(@LOCATION) +} + +pub fn @const() { + println(@LOCATION) +} + +pub fn @continue() { + println(@LOCATION) +} + +pub fn @defer() { + println(@LOCATION) +} + +pub fn @else() { + println(@LOCATION) +} + +pub fn @enum() { + println(@LOCATION) +} + +pub fn @false() { + println(@LOCATION) +} + +pub fn @fn() { + println(@LOCATION) +} + +pub fn @for() { + println(@LOCATION) +} + +pub fn @go() { + println(@LOCATION) +} + +pub fn @goto() { + println(@LOCATION) +} + +pub fn @if() { + println(@LOCATION) +} + +pub fn @implements() { + println(@LOCATION) +} + +pub fn @import() { + println(@LOCATION) +} + +pub fn @in() { + println(@LOCATION) +} + +pub fn @interface() { + println(@LOCATION) +} + +pub fn @is() { + println(@LOCATION) +} + +pub fn @isreftype() { + println(@LOCATION) +} + +pub fn @lock() { + println(@LOCATION) +} + +pub fn @match() { + println(@LOCATION) +} + +pub fn @module() { + println(@LOCATION) +} + +pub fn @mut() { + println(@LOCATION) +} + +pub fn @none() { + println(@LOCATION) +} + +pub fn @or() { + println(@LOCATION) +} + +pub fn @pub() { + println(@LOCATION) +} + +pub fn @return() { + println(@LOCATION) +} + +pub fn @rlock() { + println(@LOCATION) +} + +pub fn @select() { + println(@LOCATION) +} + +pub fn @shared() { + println(@LOCATION) +} + +pub fn @sizeof() { + println(@LOCATION) +} + +pub fn @spawn() { + println(@LOCATION) +} + +pub fn @static() { + println(@LOCATION) +} + +pub fn @struct() { + println(@LOCATION) +} + +pub fn @true() { + println(@LOCATION) +} + +pub fn @type() { + println(@LOCATION) +} + +pub fn @typeof() { + println(@LOCATION) +} + +pub fn @union() { + println(@LOCATION) +} + +pub fn @unsafe() { + println(@LOCATION) +} + +pub fn @volatile() { + println(@LOCATION) +} diff --git a/vlib/v/tests/project_importing_v_keywords/v.mod b/vlib/v/tests/project_importing_v_keywords/v.mod new file mode 100644 index 00000000000000..e69de29bb2d1d6