Skip to content

Commit

Permalink
tests: add more tests for importing @Keyword as function names, and f…
Browse files Browse the repository at this point in the history
…or V enums with c++ keyword field names (#23696)
  • Loading branch information
spytheman authored Feb 12, 2025
1 parent 6ed56ee commit 4baa6cd
Show file tree
Hide file tree
Showing 4 changed files with 237 additions and 0 deletions.
13 changes: 13 additions & 0 deletions vlib/v/tests/enums/enum_field_name_same_as_cpp_keywords_test.v
Original file line number Diff line number Diff line change
@@ -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'
}
Original file line number Diff line number Diff line change
@@ -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
}
173 changes: 173 additions & 0 deletions vlib/v/tests/project_importing_v_keywords/mymod/f.v
Original file line number Diff line number Diff line change
@@ -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)
}
Empty file.

0 comments on commit 4baa6cd

Please sign in to comment.