Skip to content

Commit 1c440f3

Browse files
Change test cases
Update CHANGELOG.md Update version in Cargo.toml
1 parent d4ea7f4 commit 1c440f3

File tree

3 files changed

+53
-46
lines changed

3 files changed

+53
-46
lines changed

riscv-target-parser/CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,15 @@ This project adheres to [Semantic Versioning](http://semver.org/).
55

66
## [Unreleased]
77

8+
## [v0.1.1] - 2025-03-18
9+
### Fixed
10+
11+
- Fix parsing of extensions starting with 's'/'x'/'z' from target features
12+
- Updated the test cases accordingly
13+
814
## [v0.1.0] - 2025-02-18
915

1016
### Added
1117

1218
- First release.
19+

riscv-target-parser/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "riscv-target-parser"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
rust-version = "1.61"
55
repository = "https://github.com/rust-embedded/riscv"
66
authors = ["The RISC-V Team <[email protected]>"]

riscv-target-parser/src/extension.rs

+45-45
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ impl<'a> TryFrom<&'a str> for Extensions {
163163

164164
while !value.is_empty() {
165165
let extension =
166-
if value.starts_with("Z") || value.starts_with("S") || value.starts_with("X") {
166+
if value.starts_with("z") || value.starts_with("s") || value.starts_with("x") {
167167
match value.find('_') {
168168
Some(pos) => {
169169
let (ext, _) = value.split_at(pos);
@@ -239,16 +239,16 @@ mod test {
239239
assert_eq!(Extension::try_from("v"), Ok(Extension::V));
240240
assert_eq!(Extension::try_from("h"), Ok(Extension::H));
241241
assert_eq!(
242-
Extension::try_from("Zicsr"),
243-
Ok(Extension::Z("Zicsr".to_string()))
242+
Extension::try_from("zicsr"),
243+
Ok(Extension::Z("zicsr".to_string()))
244244
);
245245
assert_eq!(
246-
Extension::try_from("Ssccfg"),
247-
Ok(Extension::S("Ssccfg".to_string()))
246+
Extension::try_from("ssccfg"),
247+
Ok(Extension::S("ssccfg".to_string()))
248248
);
249249
assert_eq!(
250-
Extension::try_from("XSifivecdiscarddlone"),
251-
Ok(Extension::X("XSifivecdiscarddlone".to_string()))
250+
Extension::try_from("xsifivecdiscarddlone"),
251+
Ok(Extension::X("xsifivecdiscarddlone".to_string()))
252252
);
253253
assert_eq!(
254254
Extension::try_from("unknown"),
@@ -270,11 +270,11 @@ mod test {
270270
assert_eq!(Extension::P.to_string(), "p");
271271
assert_eq!(Extension::V.to_string(), "v");
272272
assert_eq!(Extension::H.to_string(), "h");
273-
assert_eq!(Extension::Z("Zicsr".to_string()).to_string(), "Zicsr");
274-
assert_eq!(Extension::S("Ssccfg".to_string()).to_string(), "Ssccfg");
273+
assert_eq!(Extension::Z("zicsr".to_string()).to_string(), "zicsr");
274+
assert_eq!(Extension::S("ssccfg".to_string()).to_string(), "ssccfg");
275275
assert_eq!(
276-
Extension::X("XSifivecdiscarddlone".to_string()).to_string(),
277-
"XSifivecdiscarddlone"
276+
Extension::X("xsifivecdiscarddlone".to_string()).to_string(),
277+
"xsifivecdiscarddlone"
278278
);
279279
}
280280

@@ -292,9 +292,9 @@ mod test {
292292
Extension::P,
293293
Extension::V,
294294
Extension::H,
295-
Extension::Z("Zicsr".to_string()),
296-
Extension::S("Ssccfg".to_string()),
297-
Extension::X("XSifivecdiscarddlone".to_string()),
295+
Extension::Z("zicsr".to_string()),
296+
Extension::S("ssccfg".to_string()),
297+
Extension::X("xsifivecdiscarddlone".to_string()),
298298
];
299299
extensions.reverse();
300300
extensions.sort();
@@ -312,9 +312,9 @@ mod test {
312312
Extension::P,
313313
Extension::V,
314314
Extension::H,
315-
Extension::Z("Zicsr".to_string()),
316-
Extension::S("Ssccfg".to_string()),
317-
Extension::X("XSifivecdiscarddlone".to_string()),
315+
Extension::Z("zicsr".to_string()),
316+
Extension::S("ssccfg".to_string()),
317+
Extension::X("xsifivecdiscarddlone".to_string()),
318318
]
319319
);
320320
}
@@ -328,11 +328,11 @@ mod test {
328328
assert!(extensions.base_extension().is_none());
329329

330330
try_extensions =
331-
Extensions::try_from("giemafdqcbpvhXSifivecdiscarddlone_Ssccfg_Zicsr_Zaamo_u");
331+
Extensions::try_from("giemafdqcbpvhxsifivecdiscarddlone_ssccfg_zicsr_zaamo_u");
332332
assert!(try_extensions.is_err());
333333
assert_eq!(try_extensions, Err(Error::UnknownExtension("u")));
334334

335-
try_extensions = Extensions::try_from("geqcbpvhXSifivecdiscarddlone_Ssccfg_Zicsr_Zaamo_");
335+
try_extensions = Extensions::try_from("geqcbpvhxsifivecdiscarddlone_ssccfg_zicsr_zaamo_");
336336
assert!(try_extensions.is_ok());
337337
extensions = try_extensions.unwrap();
338338
assert_eq!(
@@ -350,16 +350,16 @@ mod test {
350350
Extension::P,
351351
Extension::V,
352352
Extension::H,
353-
Extension::Z("Zaamo".to_string()),
354-
Extension::Z("Zicsr".to_string()),
355-
Extension::S("Ssccfg".to_string()),
356-
Extension::X("XSifivecdiscarddlone".to_string()),
353+
Extension::Z("zaamo".to_string()),
354+
Extension::Z("zicsr".to_string()),
355+
Extension::S("ssccfg".to_string()),
356+
Extension::X("xsifivecdiscarddlone".to_string()),
357357
]
358358
);
359359
assert_eq!(extensions.base_extension(), Some(Extension::I));
360360

361361
try_extensions =
362-
Extensions::try_from("iemafdqcbpvhXSifivecdiscarddlone_Ssccfg_Zicsr_Zaamo_");
362+
Extensions::try_from("iemafdqcbpvhxsifivecdiscarddlone_ssccfg_zicsr_zaamo_");
363363
assert!(try_extensions.is_ok());
364364
extensions = try_extensions.unwrap();
365365
assert_eq!(
@@ -377,16 +377,16 @@ mod test {
377377
Extension::P,
378378
Extension::V,
379379
Extension::H,
380-
Extension::Z("Zaamo".to_string()),
381-
Extension::Z("Zicsr".to_string()),
382-
Extension::S("Ssccfg".to_string()),
383-
Extension::X("XSifivecdiscarddlone".to_string()),
380+
Extension::Z("zaamo".to_string()),
381+
Extension::Z("zicsr".to_string()),
382+
Extension::S("ssccfg".to_string()),
383+
Extension::X("xsifivecdiscarddlone".to_string()),
384384
]
385385
);
386386
assert_eq!(extensions.base_extension(), Some(Extension::I));
387387

388388
try_extensions =
389-
Extensions::try_from("emafdqcbpvhXSifivecdiscarddlone_Ssccfg_Zicsr_Zaamo_");
389+
Extensions::try_from("emafdqcbpvhxsifivecdiscarddlone_ssccfg_zicsr_zaamo_");
390390
assert!(try_extensions.is_ok());
391391
extensions = try_extensions.unwrap();
392392
assert_eq!(
@@ -403,10 +403,10 @@ mod test {
403403
Extension::P,
404404
Extension::V,
405405
Extension::H,
406-
Extension::Z("Zaamo".to_string()),
407-
Extension::Z("Zicsr".to_string()),
408-
Extension::S("Ssccfg".to_string()),
409-
Extension::X("XSifivecdiscarddlone".to_string()),
406+
Extension::Z("zaamo".to_string()),
407+
Extension::Z("zicsr".to_string()),
408+
Extension::S("ssccfg".to_string()),
409+
Extension::X("xsifivecdiscarddlone".to_string()),
410410
]
411411
);
412412
assert_eq!(extensions.base_extension(), Some(Extension::E));
@@ -452,43 +452,43 @@ mod test {
452452
let mut extensions = Extensions::try_from("imafdc").unwrap();
453453
assert_eq!(extensions.to_string(), "gc");
454454

455-
extensions.insert(Extension::try_from("Ssccfg").unwrap());
456-
assert_eq!(extensions.to_string(), "gcSsccfg");
455+
extensions.insert(Extension::try_from("ssccfg").unwrap());
456+
assert_eq!(extensions.to_string(), "gcssccfg");
457457

458-
extensions.insert(Extension::try_from("Zicsr").unwrap());
459-
assert_eq!(extensions.to_string(), "gcZicsr_Ssccfg");
458+
extensions.insert(Extension::try_from("zicsr").unwrap());
459+
assert_eq!(extensions.to_string(), "gczicsr_ssccfg");
460460

461-
extensions.insert(Extension::try_from("Zaamo").unwrap());
462-
assert_eq!(extensions.to_string(), "gcZaamo_Zicsr_Ssccfg");
461+
extensions.insert(Extension::try_from("zaamo").unwrap());
462+
assert_eq!(extensions.to_string(), "gczaamo_zicsr_ssccfg");
463463

464-
extensions.insert(Extension::try_from("XSifivecdiscarddlone").unwrap());
464+
extensions.insert(Extension::try_from("xsifivecdiscarddlone").unwrap());
465465
assert_eq!(
466466
extensions.to_string(),
467-
"gcZaamo_Zicsr_Ssccfg_XSifivecdiscarddlone"
467+
"gczaamo_zicsr_ssccfg_xsifivecdiscarddlone"
468468
);
469469

470470
extensions.insert(Extension::try_from("e").unwrap());
471471
assert_eq!(
472472
extensions.to_string(),
473-
"gecZaamo_Zicsr_Ssccfg_XSifivecdiscarddlone"
473+
"geczaamo_zicsr_ssccfg_xsifivecdiscarddlone"
474474
);
475475

476476
extensions.remove(&Extension::I);
477477
assert_eq!(
478478
extensions.to_string(),
479-
"emafdcZaamo_Zicsr_Ssccfg_XSifivecdiscarddlone"
479+
"emafdczaamo_zicsr_ssccfg_xsifivecdiscarddlone"
480480
);
481481

482482
extensions.remove(&Extension::E);
483483
assert_eq!(
484484
extensions.to_string(),
485-
"mafdcZaamo_Zicsr_Ssccfg_XSifivecdiscarddlone"
485+
"mafdczaamo_zicsr_ssccfg_xsifivecdiscarddlone"
486486
);
487487

488488
extensions.insert(Extension::I);
489489
assert_eq!(
490490
extensions.to_string(),
491-
"gcZaamo_Zicsr_Ssccfg_XSifivecdiscarddlone"
491+
"gczaamo_zicsr_ssccfg_xsifivecdiscarddlone"
492492
);
493493
}
494494
}

0 commit comments

Comments
 (0)