Skip to content

Commit ac86dab

Browse files
committed
feat: add net.CIDR_subnets function
Signed-off-by: John Gardiner Myers <[email protected]>
1 parent aef68af commit ac86dab

File tree

14 files changed

+457
-93
lines changed

14 files changed

+457
-93
lines changed

kclvm/api/src/service/service_impl.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,9 @@ impl KclvmServiceImpl {
223223
/// assert_eq!(result.type_errors.len(), 0);
224224
/// assert_eq!(result.symbols.len(), 12);
225225
/// assert_eq!(result.scopes.len(), 3);
226-
/// assert_eq!(result.node_symbol_map.len(), 190);
227-
/// assert_eq!(result.symbol_node_map.len(), 190);
228-
/// assert_eq!(result.fully_qualified_name_map.len(), 201);
226+
/// assert_eq!(result.node_symbol_map.len(), 191);
227+
/// assert_eq!(result.symbol_node_map.len(), 191);
228+
/// assert_eq!(result.fully_qualified_name_map.len(), 202);
229229
/// assert_eq!(result.pkg_scope_map.len(), 3);
230230
/// ```
231231
#[inline]

kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_0.snap

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
8989
},
9090
),
9191
attrs: [
92-
SymbolRef {
93-
id: Index {
94-
index: 148,
95-
generation: 0,
96-
},
97-
kind: Function,
98-
},
9992
SymbolRef {
10093
id: Index {
10194
index: 149,
@@ -299,6 +292,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
299292
},
300293
kind: Function,
301294
},
295+
SymbolRef {
296+
id: Index {
297+
index: 178,
298+
generation: 0,
299+
},
300+
kind: Function,
301+
},
302302
],
303303
is_global: false,
304304
},

kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_1.snap

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -246,13 +246,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
246246
},
247247
),
248248
attrs: [
249-
SymbolRef {
250-
id: Index {
251-
index: 148,
252-
generation: 0,
253-
},
254-
kind: Function,
255-
},
256249
SymbolRef {
257250
id: Index {
258251
index: 149,
@@ -456,6 +449,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
456449
},
457450
kind: Function,
458451
},
452+
SymbolRef {
453+
id: Index {
454+
index: 178,
455+
generation: 0,
456+
},
457+
kind: Function,
458+
},
459459
],
460460
is_global: false,
461461
},
@@ -495,13 +495,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
495495
},
496496
),
497497
attrs: [
498-
SymbolRef {
499-
id: Index {
500-
index: 148,
501-
generation: 0,
502-
},
503-
kind: Function,
504-
},
505498
SymbolRef {
506499
id: Index {
507500
index: 149,
@@ -705,6 +698,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
705698
},
706699
kind: Function,
707700
},
701+
SymbolRef {
702+
id: Index {
703+
index: 178,
704+
generation: 0,
705+
},
706+
kind: Function,
707+
},
708708
],
709709
is_global: false,
710710
},
@@ -744,13 +744,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
744744
},
745745
),
746746
attrs: [
747-
SymbolRef {
748-
id: Index {
749-
index: 148,
750-
generation: 0,
751-
},
752-
kind: Function,
753-
},
754747
SymbolRef {
755748
id: Index {
756749
index: 149,
@@ -954,6 +947,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
954947
},
955948
kind: Function,
956949
},
950+
SymbolRef {
951+
id: Index {
952+
index: 178,
953+
generation: 0,
954+
},
955+
kind: Function,
956+
},
957957
],
958958
is_global: false,
959959
},

kclvm/loader/src/snapshots/kclvm_loader__tests__builtin_call_2.snap

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -578,13 +578,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
578578
},
579579
),
580580
attrs: [
581-
SymbolRef {
582-
id: Index {
583-
index: 148,
584-
generation: 0,
585-
},
586-
kind: Function,
587-
},
588581
SymbolRef {
589582
id: Index {
590583
index: 149,
@@ -788,6 +781,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
788781
},
789782
kind: Function,
790783
},
784+
SymbolRef {
785+
id: Index {
786+
index: 178,
787+
generation: 0,
788+
},
789+
kind: Function,
790+
},
791791
],
792792
is_global: false,
793793
},
@@ -827,13 +827,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
827827
},
828828
),
829829
attrs: [
830-
SymbolRef {
831-
id: Index {
832-
index: 148,
833-
generation: 0,
834-
},
835-
kind: Function,
836-
},
837830
SymbolRef {
838831
id: Index {
839832
index: 149,
@@ -1037,6 +1030,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
10371030
},
10381031
kind: Function,
10391032
},
1033+
SymbolRef {
1034+
id: Index {
1035+
index: 178,
1036+
generation: 0,
1037+
},
1038+
kind: Function,
1039+
},
10401040
],
10411041
is_global: false,
10421042
},
@@ -1076,13 +1076,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
10761076
},
10771077
),
10781078
attrs: [
1079-
SymbolRef {
1080-
id: Index {
1081-
index: 148,
1082-
generation: 0,
1083-
},
1084-
kind: Function,
1085-
},
10861079
SymbolRef {
10871080
id: Index {
10881081
index: 149,
@@ -1286,6 +1279,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
12861279
},
12871280
kind: Function,
12881281
},
1282+
SymbolRef {
1283+
id: Index {
1284+
index: 178,
1285+
generation: 0,
1286+
},
1287+
kind: Function,
1288+
},
12891289
],
12901290
is_global: false,
12911291
},

kclvm/loader/src/snapshots/kclvm_loader__tests__import_stmt_0.snap

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
4646
},
4747
),
4848
attrs: [
49-
SymbolRef {
50-
id: Index {
51-
index: 51,
52-
generation: 0,
53-
},
54-
kind: Function,
55-
},
5649
SymbolRef {
5750
id: Index {
5851
index: 52,
@@ -158,6 +151,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
158151
},
159152
kind: Function,
160153
},
154+
SymbolRef {
155+
id: Index {
156+
index: 67,
157+
generation: 0,
158+
},
159+
kind: Function,
160+
},
161161
],
162162
is_global: false,
163163
},
@@ -247,13 +247,6 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
247247
},
248248
),
249249
attrs: [
250-
SymbolRef {
251-
id: Index {
252-
index: 51,
253-
generation: 0,
254-
},
255-
kind: Function,
256-
},
257250
SymbolRef {
258251
id: Index {
259252
index: 52,
@@ -359,6 +352,13 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
359352
},
360353
kind: Function,
361354
},
355+
SymbolRef {
356+
id: Index {
357+
index: 67,
358+
generation: 0,
359+
},
360+
kind: Function,
361+
},
362362
],
363363
is_global: false,
364364
},
@@ -460,7 +460,7 @@ expression: "format! (\"{:#?}\", p.symbols.values())"
460460
def: Some(
461461
SymbolRef {
462462
id: Index {
463-
index: 61,
463+
index: 62,
464464
generation: 0,
465465
},
466466
kind: Function,

kclvm/runtime/src/_kclvm.h

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#include <stdint.h>
1313

1414
#ifdef __cplusplus
15-
extern "C-unwind" {
15+
extern "C" {
1616
#endif
1717

1818
// please keep same as 'kclvm/runtime/src/kind/mod.rs#Kind'
@@ -425,24 +425,22 @@ kclvm_value_ref_t* kclvm_math_sqrt(kclvm_context_t* ctx, kclvm_value_ref_t* args
425425

426426
kclvm_value_ref_t* kclvm_net_CIDR_subnet(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
427427

428+
kclvm_value_ref_t* kclvm_net_CIDR_subnets(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
429+
428430
kclvm_value_ref_t* kclvm_net_IP_string(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
429431

430432
kclvm_value_ref_t* kclvm_net_fqdn(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
431433

434+
kclvm_value_ref_t* kclvm_net_hosts_in_CIDR(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
435+
432436
kclvm_value_ref_t* kclvm_net_is_IP(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
433437

438+
kclvm_value_ref_t* kclvm_net_is_IP_in_CIDR(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
439+
434440
kclvm_value_ref_t* kclvm_net_is_IPv4(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
435441

436442
kclvm_value_ref_t* kclvm_net_is_global_unicast_IP(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
437443

438-
kclvm_value_ref_t* kclvm_net_parse_CIDR (kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* _kwargs);
439-
440-
kclvm_value_ref_t* kclvm_net_hosts_in_CIDR (kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* _kwargs);
441-
442-
kclvm_value_ref_t* kclvm_net_subnets_from_CIDR (kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* _kwargs);
443-
444-
kclvm_value_ref_t* kclvm_net_is_IP_in_CIDR (kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* _kwargs);
445-
446444
kclvm_value_ref_t* kclvm_net_is_interface_local_multicast_IP(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
447445

448446
kclvm_value_ref_t* kclvm_net_is_link_local_multicast_IP(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
@@ -457,10 +455,14 @@ kclvm_value_ref_t* kclvm_net_is_unspecified_IP(kclvm_context_t* ctx, kclvm_value
457455

458456
kclvm_value_ref_t* kclvm_net_join_host_port(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
459457

458+
kclvm_value_ref_t* kclvm_net_parse_CIDR(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
459+
460460
kclvm_value_ref_t* kclvm_net_parse_IP(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
461461

462462
kclvm_value_ref_t* kclvm_net_split_host_port(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
463463

464+
kclvm_value_ref_t* kclvm_net_subnets_from_CIDR(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
465+
464466
kclvm_value_ref_t* kclvm_net_to_IP16(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
465467

466468
kclvm_value_ref_t* kclvm_net_to_IP4(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
@@ -730,7 +732,7 @@ kclvm_value_ref_t* kclvm_yaml_encode_all(kclvm_context_t* ctx, kclvm_value_ref_t
730732
kclvm_value_ref_t* kclvm_yaml_validate(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
731733

732734
#ifdef __cplusplus
733-
} // extern "C-unwind"
735+
} // extern "C"
734736
#endif
735737

736738
#endif // _kclvm_h_

kclvm/runtime/src/_kclvm.ll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,8 @@ declare %kclvm_value_ref_t* @kclvm_math_sqrt(%kclvm_context_t* %ctx, %kclvm_valu
388388

389389
declare %kclvm_value_ref_t* @kclvm_net_CIDR_subnet(%kclvm_context_t* %ctx, %kclvm_value_ref_t* %args, %kclvm_value_ref_t* %kwargs);
390390

391+
declare %kclvm_value_ref_t* @kclvm_net_CIDR_subnets(%kclvm_context_t* %ctx, %kclvm_value_ref_t* %args, %kclvm_value_ref_t* %kwargs);
392+
391393
declare %kclvm_value_ref_t* @kclvm_net_IP_string(%kclvm_context_t* %ctx, %kclvm_value_ref_t* %args, %kclvm_value_ref_t* %kwargs);
392394

393395
declare %kclvm_value_ref_t* @kclvm_net_fqdn(%kclvm_context_t* %ctx, %kclvm_value_ref_t* %args, %kclvm_value_ref_t* %kwargs);

kclvm/runtime/src/_kclvm.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,24 +205,25 @@ pub enum ApiFunc {
205205
kclvm_math_pow,
206206
kclvm_math_sqrt,
207207
kclvm_net_CIDR_subnet,
208+
kclvm_net_CIDR_subnets,
208209
kclvm_net_IP_string,
209210
kclvm_net_fqdn,
211+
kclvm_net_hosts_in_CIDR,
210212
kclvm_net_is_IP,
213+
kclvm_net_is_IP_in_CIDR,
211214
kclvm_net_is_IPv4,
212215
kclvm_net_is_global_unicast_IP,
213-
kclvm_net_parse_CIDR,
214-
kclvm_net_hosts_in_CIDR,
215-
kclvm_net_subnets_from_CIDR,
216-
kclvm_net_is_IP_in_CIDR,
217216
kclvm_net_is_interface_local_multicast_IP,
218217
kclvm_net_is_link_local_multicast_IP,
219218
kclvm_net_is_link_local_unicast_IP,
220219
kclvm_net_is_loopback_IP,
221220
kclvm_net_is_multicast_IP,
222221
kclvm_net_is_unspecified_IP,
223222
kclvm_net_join_host_port,
223+
kclvm_net_parse_CIDR,
224224
kclvm_net_parse_IP,
225225
kclvm_net_split_host_port,
226+
kclvm_net_subnets_from_CIDR,
226227
kclvm_net_to_IP16,
227228
kclvm_net_to_IP4,
228229
kclvm_plugin_init,

kclvm/runtime/src/_kclvm_addr.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ pub fn _kclvm_get_fn_ptr_by_name(name: &str) -> u64 {
210210
"kclvm_math_pow" => crate::kclvm_math_pow as *const () as u64,
211211
"kclvm_math_sqrt" => crate::kclvm_math_sqrt as *const () as u64,
212212
"kclvm_net_CIDR_subnet" => crate::kclvm_net_CIDR_subnet as *const () as u64,
213+
"kclvm_net_CIDR_subnets" => crate::kclvm_net_CIDR_subnets as *const () as u64,
213214
"kclvm_net_IP_string" => crate::kclvm_net_IP_string as *const () as u64,
214215
"kclvm_net_fqdn" => crate::kclvm_net_fqdn as *const () as u64,
215216
"kclvm_net_is_IP" => crate::kclvm_net_is_IP as *const () as u64,

kclvm/runtime/src/_kclvm_api_spec.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,6 +1014,10 @@
10141014
// api-spec(c): kclvm_value_ref_t* kclvm_net_CIDR_subnet(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
10151015
// api-spec(llvm): declare %kclvm_value_ref_t* @kclvm_net_CIDR_subnet(%kclvm_context_t* %ctx, %kclvm_value_ref_t* %args, %kclvm_value_ref_t* %kwargs);
10161016

1017+
// api-spec: kclvm_net_CIDR_subnets
1018+
// api-spec(c): kclvm_value_ref_t* kclvm_net_CIDR_subnets(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
1019+
// api-spec(llvm): declare %kclvm_value_ref_t* @kclvm_net_CIDR_subnets(%kclvm_context_t* %ctx, %kclvm_value_ref_t* %args, %kclvm_value_ref_t* %kwargs);
1020+
10171021
// api-spec: kclvm_regex_match
10181022
// api-spec(c): kclvm_value_ref_t* kclvm_regex_match(kclvm_context_t* ctx, kclvm_value_ref_t* args, kclvm_value_ref_t* kwargs);
10191023
// api-spec(llvm): declare %kclvm_value_ref_t* @kclvm_regex_match(%kclvm_context_t* %ctx, %kclvm_value_ref_t* %args, %kclvm_value_ref_t* %kwargs);

0 commit comments

Comments
 (0)