Coverage for tests/codegen/generated/keywords/exports/for_.py: 96%

55 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-02-20 16:25 +0000

1from ..intrinsics import _clamp 

2from dataclasses import dataclass 

3from typing import Union 

4import wasmtime 

5 

6from typing import TYPE_CHECKING 

7if TYPE_CHECKING: 

8 from .. import Root 

9 

10@dataclass 

11class None_Break: 

12 value: int 

13 

14@dataclass 

15class None_Class: 

16 value: int 

17 

18@dataclass 

19class None_True_: 

20 value: int 

21 

22None_ = Union[None_Break, None_Class, None_True_] 

23 

24@dataclass 

25class True_: 

26 else_: int 

27 not_: int 

28 except_: int 

29 

30class For: 

31 component: 'Root' 

32 

33 def __init__(self, component: 'Root') -> None: 

34 self.component = component 

35 def lambda_(self, caller: wasmtime.Store, def_: True_) -> int: 

36 record = def_ 

37 field = record.else_ 

38 field0 = record.not_ 

39 field1 = record.except_ 

40 ret = self.component.lift_callee0(caller, _clamp(field, 0, 255), _clamp(field0, 0, 255), _clamp(field1, 0, 255)) 

41 assert(isinstance(ret, int)) 

42 return ret & 0xffffffff 

43 def await_(self, caller: wasmtime.Store) -> int: 

44 ret = self.component.lift_callee1(caller) 

45 assert(isinstance(ret, int)) 

46 return _clamp(ret, 0, 255) 

47 def as_(self, caller: wasmtime.Store, import_: None_) -> int: 

48 if isinstance(import_, None_Break): 

49 payload = import_.value 

50 variant = 0 

51 variant2 = _clamp(payload, -2147483648, 2147483647) 

52 elif isinstance(import_, None_Class): 

53 payload0 = import_.value 

54 variant = 1 

55 variant2 = _clamp(payload0, -9223372036854775808, 9223372036854775807) 

56 elif isinstance(import_, None_True_): 

57 payload1 = import_.value 

58 variant = 2 

59 variant2 = _clamp(payload1, -9223372036854775808, 9223372036854775807) 

60 else: 

61 raise TypeError("invalid variant specified for None_") 

62 ret = self.component.lift_callee2(caller, variant, variant2) 

63 assert(isinstance(ret, int)) 

64 return ret 

65