aboutsummaryrefslogtreecommitdiff
path: root/environment.c
diff options
context:
space:
mode:
Diffstat (limited to 'environment.c')
-rw-r--r--environment.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/environment.c b/environment.c
index 3ba36a31..7b4bb5bf 100644
--- a/environment.c
+++ b/environment.c
@@ -17,6 +17,7 @@ type_t *MATCH_TYPE = NULL;
type_t *RNG_TYPE = NULL;
public type_t *PATH_TYPE = NULL;
public type_t *THREAD_TYPE = NULL;
+public type_t *PATH_TYPE_TYPE = NULL;
static type_t *declare_type(env_t *env, const char *def_str)
{
@@ -66,8 +67,9 @@ env_t *global_env(void)
(void)bind_type(env, "Int", Type(BigIntType));
(void)bind_type(env, "Int32", Type(IntType, .bits=TYPE_IBITS32));
(void)bind_type(env, "Memory", Type(MemoryType));
+ PATH_TYPE_TYPE = declare_type(env, "enum PathType(Relative, Absolute, Home)");
MATCH_TYPE = declare_type(env, "struct Match(text:Text, index:Int, captures:[Text])");
- PATH_TYPE = declare_type(env, "struct Path(type:Int32, components:[Text])");
+ PATH_TYPE = declare_type(env, "struct Path(type:PathType, components:[Text])");
THREAD_TYPE = declare_type(env, "struct Thread(; opaque)");
RNG_TYPE = declare_type(env, "struct RNG(state:@Memory)");
@@ -308,6 +310,11 @@ env_t *global_env(void)
{"unix_timestamp", "Moment$unix_timestamp", "func(moment:Moment -> Int64)"},
{"year", "Moment$year", "func(moment:Moment,timezone=none:Text -> Int)"},
)},
+ {"PathType", PATH_TYPE_TYPE, "PathType_t", "PathType$info", TypedArray(ns_entry_t,
+ {"Relative", "((PathType_t){.$tag=PATH_RELATIVE})", "PathType"},
+ {"Absolute", "((PathType_t){.$tag=PATH_ABSOLUTE})", "PathType"},
+ {"Home", "((PathType_t){.$tag=PATH_HOME})", "PathType"},
+ )},
{"Path", PATH_TYPE, "Path_t", "Path$info", TypedArray(ns_entry_t,
{"accessed", "Path$accessed", "func(path:Path, follow_symlinks=yes -> Moment?)"},
{"append", "Path$append", "func(path:Path, text:Text, permissions=Int32(0o644))"},