cmake_parser/doc/command/project/
enable_language.rs1use ::cmake_parser_derive::CMake;
2
3use crate::{CommandScope, ToCommandScope, Token};
4
5#[derive(CMake, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9#[cmake(pkg = "crate", default = "langs")]
10pub struct EnableLanguage<'t> {
11 #[cmake(rename = "")]
12 pub langs: Vec<Token<'t>>,
13 pub optional: bool,
14}
15
16impl<'t> ToCommandScope for EnableLanguage<'t> {
17 fn to_command_scope(&self) -> CommandScope {
18 CommandScope::Project
19 }
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25 use crate::doc::cmake_parse::tests::tokens;
26 use crate::*;
27
28 #[test]
29 fn enable_language() {
30 let src = include_bytes!("../../../../../fixture/commands/project/enable_language");
31 let cmakelists = parse_cmakelists(src).unwrap();
32 let doc = Doc::from(cmakelists);
33
34 assert_eq!(
35 doc.commands(),
36 Ok(vec![
37 Command::EnableLanguage(Box::new(EnableLanguage {
38 langs: tokens([b"CUDA"]).to_vec(),
39 optional: false,
40 })),
41 Command::EnableLanguage(Box::new(EnableLanguage {
42 langs: tokens([b"CSharp", b"ASM_NASM",]).to_vec(),
43 optional: true,
44 })),
45 ])
46 )
47 }
48}