agra
d6ef691e42
ffi M2.1(a): class-level constants 'name :: Type = expr;'
...
Inside a '#objc_class { ... }' block, 'name :: Type = expr;' is
accepted alongside the existing method form. Parsed as sugar for
'name :: () -> Type => expr;' — a niladic class method with an
expression body. The synthesized class method flows through the
M2.1(b) class-method pipeline: a C-ABI IMP is emitted and
registered on the metaclass.
Apple's runtime sees zero distinction — '[Cls foo]' dispatches to
our IMP regardless of source spelling. The constant form is
purely syntactic sugar; it reads better for static metadata
returns:
SxGLView :: #objc_class("SxGLView") {
layerClass :: Class = CAEAGLLayer.class();
}
vs. the equivalent method form:
layerClass :: () -> Class => CAEAGLLayer.class();
Parser change: after 'name ::' if the next token isn't '(' we
take the constant branch — parse a type expr, expect '=', parse
the value expr, expect ';'. The result is a ForeignMethodDecl
with is_static=true, empty params, return_type=Type, body=block
wrapping the expr. Pure parser-level transformation; no new AST
nodes, no new lowering passes.
150-objc-class-level-constant.sx exercises both shapes on macOS:
a primitive (s32 answer) and a pointer ('*NSObject seedClass'
— the canonical '+layerClass'-style factory return).
180 example tests pass (+1). zig build test green.
M2.1 complete: both (a) the constant form and (b) the
expression-bodied class method shape land.
Next: M2.2 — 'field: T #property(modifiers...)' synthesizes
getter/setter pairs.
2026-05-25 23:43:46 +03:00
..
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 19:44:20 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-05-17 13:19:08 +03:00
2026-05-25 09:10:04 +03:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-05-24 22:59:20 +03:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-20 18:22:42 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 19:44:20 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-15 12:02:36 +02:00
2026-02-22 22:16:30 +02:00
2026-02-22 22:16:30 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-28 18:03:38 +02:00
2026-02-23 13:45:44 +02:00
2026-02-23 13:45:44 +02:00
2026-02-25 15:51:22 +02:00
2026-02-25 15:51:22 +02:00
2026-03-02 21:00:55 +02:00
2026-03-02 21:00:55 +02:00
2026-02-15 19:44:20 +02:00
2026-05-25 15:33:28 +03:00
2026-03-05 16:20:36 +02:00
2026-03-05 16:20:36 +02:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-19 12:06:08 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 18:32:55 +03:00
2026-05-18 18:32:55 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-19 00:22:35 +03:00
2026-05-19 00:22:35 +03:00
2026-05-19 11:31:04 +03:00
2026-05-19 11:31:04 +03:00
2026-05-19 19:18:31 +03:00
2026-05-19 19:18:31 +03:00
2026-05-19 21:14:31 +03:00
2026-05-19 21:14:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-23 01:28:32 +03:00
2026-05-23 01:28:32 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-25 09:50:37 +03:00
2026-05-25 09:50:37 +03:00
2026-05-25 11:41:59 +03:00
2026-05-25 11:41:59 +03:00
2026-05-25 12:18:27 +03:00
2026-05-25 12:18:27 +03:00
2026-05-25 15:01:58 +03:00
2026-05-25 15:01:58 +03:00
2026-05-25 15:23:13 +03:00
2026-05-25 15:23:13 +03:00
2026-05-25 15:45:33 +03:00
2026-05-25 15:45:33 +03:00
2026-05-25 15:59:32 +03:00
2026-05-25 15:59:32 +03:00
2026-05-25 17:52:53 +03:00
2026-05-25 17:52:53 +03:00
2026-05-25 21:15:44 +03:00
2026-05-25 21:15:44 +03:00
2026-05-25 21:18:09 +03:00
2026-05-25 21:18:09 +03:00
2026-05-25 21:33:20 +03:00
2026-05-25 21:33:20 +03:00
2026-05-25 22:08:23 +03:00
2026-05-25 23:40:51 +03:00
2026-05-25 22:08:23 +03:00
2026-05-25 22:14:31 +03:00
2026-05-25 22:14:31 +03:00
2026-05-25 22:23:59 +03:00
2026-05-25 22:23:59 +03:00
2026-05-25 22:58:20 +03:00
2026-05-25 22:58:20 +03:00
2026-05-25 23:17:30 +03:00
2026-05-25 23:17:30 +03:00
2026-05-25 23:25:13 +03:00
2026-05-25 23:25:13 +03:00
2026-05-25 23:33:52 +03:00
2026-05-25 23:33:52 +03:00
2026-05-25 23:40:51 +03:00
2026-05-25 23:40:51 +03:00
2026-05-25 23:43:46 +03:00
2026-05-25 23:43:46 +03:00
2026-05-19 11:15:13 +03:00
2026-05-19 11:15:13 +03:00
2026-05-19 11:21:16 +03:00
2026-05-19 11:32:36 +03:00
2026-05-19 11:41:06 +03:00
2026-05-19 11:41:06 +03:00
2026-05-19 11:44:43 +03:00
2026-05-19 11:44:43 +03:00
2026-05-19 11:46:47 +03:00
2026-05-19 11:46:47 +03:00
2026-05-19 11:48:34 +03:00
2026-05-19 11:48:34 +03:00
2026-05-19 11:51:34 +03:00
2026-05-19 11:51:34 +03:00
2026-05-19 11:57:44 +03:00
2026-05-19 11:57:44 +03:00
2026-05-19 11:59:18 +03:00
2026-05-19 11:59:18 +03:00
2026-05-22 13:13:43 +03:00
2026-05-22 13:13:43 +03:00
2026-05-19 12:46:53 +03:00
2026-05-19 12:46:53 +03:00
2026-05-19 21:25:42 +03:00
2026-05-19 21:25:42 +03:00
2026-05-19 21:41:26 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 21:41:26 +03:00
2026-05-19 22:26:03 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 22:26:03 +03:00
2026-05-19 22:30:05 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 22:30:05 +03:00
2026-05-19 22:31:58 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 22:31:58 +03:00
2026-05-19 22:33:58 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 22:33:58 +03:00
2026-05-19 22:36:36 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 22:36:36 +03:00
2026-05-19 22:40:47 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 22:40:47 +03:00
2026-05-23 01:28:32 +03:00
2026-05-23 01:28:32 +03:00
2026-05-23 01:28:32 +03:00
2026-05-23 01:28:32 +03:00
2026-05-20 09:24:14 +03:00
2026-05-20 09:24:14 +03:00
2026-05-20 09:30:02 +03:00
2026-05-20 09:30:02 +03:00
2026-05-20 09:35:09 +03:00
2026-05-20 09:35:09 +03:00
2026-05-20 10:02:56 +03:00
2026-05-20 10:02:56 +03:00
2026-05-20 10:05:30 +03:00
2026-05-20 10:05:30 +03:00
2026-05-20 10:10:23 +03:00
2026-05-20 10:10:23 +03:00
2026-05-20 10:15:10 +03:00
2026-05-20 10:15:10 +03:00
2026-05-20 11:07:41 +03:00
2026-05-25 15:33:28 +03:00
2026-05-20 11:07:41 +03:00
2026-05-23 01:28:32 +03:00
2026-05-23 01:28:32 +03:00
2026-05-20 10:41:24 +03:00
2026-05-20 10:41:24 +03:00
2026-05-20 10:54:37 +03:00
2026-05-25 15:33:28 +03:00
2026-05-20 10:54:37 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 14:42:03 +03:00
2026-05-20 14:42:03 +03:00
2026-05-20 16:57:30 +03:00
2026-05-20 16:57:30 +03:00
2026-05-20 17:14:51 +03:00
2026-05-20 17:14:51 +03:00
2026-05-19 12:45:49 +03:00
2026-05-19 12:45:49 +03:00
2026-05-19 12:56:53 +03:00
2026-05-19 12:56:53 +03:00
2026-05-19 12:59:13 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 12:59:13 +03:00
2026-05-19 18:39:10 +03:00
2026-05-19 18:39:10 +03:00
2026-05-19 18:44:14 +03:00
2026-05-19 18:44:14 +03:00
2026-05-19 18:45:57 +03:00
2026-05-25 15:33:28 +03:00
2026-05-19 18:50:26 +03:00
2026-05-19 18:51:56 +03:00
2026-05-19 18:51:56 +03:00
2026-05-19 18:53:19 +03:00
2026-05-19 18:53:19 +03:00
2026-05-19 18:57:41 +03:00
2026-05-19 18:57:41 +03:00
2026-05-19 19:00:47 +03:00
2026-05-19 19:00:47 +03:00
2026-05-19 20:12:09 +03:00
2026-05-19 20:12:09 +03:00
2026-05-19 21:19:09 +03:00
2026-05-19 21:19:09 +03:00
2026-05-25 23:29:55 +03:00
2026-05-25 23:29:55 +03:00
2026-05-25 16:10:22 +03:00
2026-05-25 16:10:22 +03:00
2026-05-25 16:10:22 +03:00
2026-05-25 16:10:22 +03:00
2026-05-25 16:10:22 +03:00
2026-05-25 16:10:22 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 17:00:23 +03:00
2026-05-25 16:23:24 +03:00
2026-05-25 16:23:24 +03:00
2026-05-25 17:00:23 +03:00
2026-05-25 17:00:23 +03:00
2026-05-25 17:03:16 +03:00
2026-05-25 17:03:16 +03:00
2026-05-25 17:03:16 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00