Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c6a2fac authored by Mårten Kongstad's avatar Mårten Kongstad
Browse files

aconfig: pass ownership of ProtoParsedFlag items to Java codegen

Pass ownership of the ProtoParsedFlag iterator items to the Java
codegen: this removes the need for an explicit lifetime annotation.

Bug: N/A
Test: atest aconfig.test
Change-Id: I78705b65b4cf41c3e23b59afbd122a029ee45df4
parent 49c49f36
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -24,16 +24,16 @@ use crate::codegen;
use crate::commands::{CodegenMode, OutputFile};
use crate::commands::{CodegenMode, OutputFile};
use crate::protos::{ProtoFlagPermission, ProtoFlagState, ProtoParsedFlag};
use crate::protos::{ProtoFlagPermission, ProtoFlagState, ProtoParsedFlag};


pub fn generate_java_code<'a, I>(
pub fn generate_java_code<I>(
    package: &str,
    package: &str,
    parsed_flags_iter: I,
    parsed_flags_iter: I,
    codegen_mode: CodegenMode,
    codegen_mode: CodegenMode,
) -> Result<Vec<OutputFile>>
) -> Result<Vec<OutputFile>>
where
where
    I: Iterator<Item = &'a ProtoParsedFlag>,
    I: Iterator<Item = ProtoParsedFlag>,
{
{
    let flag_elements: Vec<FlagElement> =
    let flag_elements: Vec<FlagElement> =
        parsed_flags_iter.map(|pf| create_flag_element(package, pf)).collect();
        parsed_flags_iter.map(|pf| create_flag_element(package, &pf)).collect();
    let exported_flag_elements: Vec<FlagElement> =
    let exported_flag_elements: Vec<FlagElement> =
        flag_elements.iter().filter(|elem| elem.exported).cloned().collect();
        flag_elements.iter().filter(|elem| elem.exported).cloned().collect();
    let namespace_flags = gen_flags_by_namespace(&flag_elements);
    let namespace_flags = gen_flags_by_namespace(&flag_elements);
@@ -361,7 +361,7 @@ mod tests {
        let parsed_flags = crate::test::parse_test_flags();
        let parsed_flags = crate::test::parse_test_flags();
        let generated_files = generate_java_code(
        let generated_files = generate_java_code(
            crate::test::TEST_PACKAGE,
            crate::test::TEST_PACKAGE,
            parsed_flags.parsed_flag.iter(),
            parsed_flags.parsed_flag.into_iter(),
            CodegenMode::Production,
            CodegenMode::Production,
        )
        )
        .unwrap();
        .unwrap();
@@ -514,7 +514,7 @@ mod tests {
        let parsed_flags = crate::test::parse_test_flags();
        let parsed_flags = crate::test::parse_test_flags();
        let generated_files = generate_java_code(
        let generated_files = generate_java_code(
            crate::test::TEST_PACKAGE,
            crate::test::TEST_PACKAGE,
            parsed_flags.parsed_flag.iter(),
            parsed_flags.parsed_flag.into_iter(),
            CodegenMode::Exported,
            CodegenMode::Exported,
        )
        )
        .unwrap();
        .unwrap();
@@ -705,7 +705,7 @@ mod tests {
        let parsed_flags = crate::test::parse_test_flags();
        let parsed_flags = crate::test::parse_test_flags();
        let generated_files = generate_java_code(
        let generated_files = generate_java_code(
            crate::test::TEST_PACKAGE,
            crate::test::TEST_PACKAGE,
            parsed_flags.parsed_flag.iter(),
            parsed_flags.parsed_flag.into_iter(),
            CodegenMode::Test,
            CodegenMode::Test,
        )
        )
        .unwrap();
        .unwrap();
+2 −1
Original line number Original line Diff line number Diff line
@@ -201,7 +201,8 @@ pub fn create_java_lib(mut input: Input, codegen_mode: CodegenMode) -> Result<Ve
    let Some(package) = find_unique_package(&filtered_parsed_flags) else {
    let Some(package) = find_unique_package(&filtered_parsed_flags) else {
        bail!("no parsed flags, or the parsed flags use different packages");
        bail!("no parsed flags, or the parsed flags use different packages");
    };
    };
    generate_java_code(package, filtered_parsed_flags.iter(), codegen_mode)
    let package = package.to_string();
    generate_java_code(&package, filtered_parsed_flags.into_iter(), codegen_mode)
}
}


pub fn create_cpp_lib(mut input: Input, codegen_mode: CodegenMode) -> Result<Vec<OutputFile>> {
pub fn create_cpp_lib(mut input: Input, codegen_mode: CodegenMode) -> Result<Vec<OutputFile>> {