tests: add more tests for importing @keyword as function names, and for V enums with c++ keyword field names (#23696)

This commit is contained in:
Delyan Angelov 2025-02-12 12:03:13 +02:00 committed by GitHub
parent 6ed56eef64
commit 4baa6cd70e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 237 additions and 0 deletions

View File

@ -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'
}

View File

@ -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
}

View File

@ -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)
}