USELESS_LOOP: {
    createSearch: () => FlowrSearchBuilderOut<
        "all",
        [],
        ParentInformation,
        "filter",
    >;
    info: {
        certainty: BestEffort;
        defaultConfig: {
            loopyFunctions: Set<
                | "builtin:default"
                | "builtin:eval"
                | "builtin:apply"
                | "builtin:expression-list"
                | "builtin:source"
                | "builtin:access"
                | "builtin:if-then-else"
                | "builtin:get"
                | "builtin:rm"
                | "builtin:library"
                | "builtin:assignment"
                | "builtin:special-bin-op"
                | "builtin:pipe"
                | "builtin:function-definition"
                | "builtin:quote"
                | "builtin:for-loop"
                | "builtin:repeat-loop"
                | "builtin:while-loop"
                | "builtin:replacement"
                | "builtin:list"
                | "builtin:vector",
            >;
        };
        description: "Detect loops which only iterate once";
        name: "Useless Loops";
        tags: readonly [Smell, Readability];
    };
    prettyPrint: {
        full: (result: UselessLoopResult) => string;
        query: (result: UselessLoopResult) => string;
    };
    processSearchResult: (
        elements: FlowrSearchElements<
            ParentInformation,
            FlowrSearchElement<ParentInformation>[],
        >,
        config: UselessLoopConfig,
        data: {
            config: FlowrConfigOptions;
            dataflow: DataflowInformation;
            normalize: NormalizedAst;
        },
    ) => {
        ".meta": { numOfUselessLoops: number };
        results: { certainty: Certain; name: string; range: SourceRange }[];
    };
} = ...

Type declaration

  • ReadonlycreateSearch: () => FlowrSearchBuilderOut<"all", [], ParentInformation, "filter">
  • Readonlyinfo: {
        certainty: BestEffort;
        defaultConfig: {
            loopyFunctions: Set<
                | "builtin:default"
                | "builtin:eval"
                | "builtin:apply"
                | "builtin:expression-list"
                | "builtin:source"
                | "builtin:access"
                | "builtin:if-then-else"
                | "builtin:get"
                | "builtin:rm"
                | "builtin:library"
                | "builtin:assignment"
                | "builtin:special-bin-op"
                | "builtin:pipe"
                | "builtin:function-definition"
                | "builtin:quote"
                | "builtin:for-loop"
                | "builtin:repeat-loop"
                | "builtin:while-loop"
                | "builtin:replacement"
                | "builtin:list"
                | "builtin:vector",
            >;
        };
        description: "Detect loops which only iterate once";
        name: "Useless Loops";
        tags: readonly [Smell, Readability];
    }
  • ReadonlyprettyPrint: {
        full: (result: UselessLoopResult) => string;
        query: (result: UselessLoopResult) => string;
    }
  • ReadonlyprocessSearchResult: (
        elements: FlowrSearchElements<
            ParentInformation,
            FlowrSearchElement<ParentInformation>[],
        >,
        config: UselessLoopConfig,
        data: {
            config: FlowrConfigOptions;
            dataflow: DataflowInformation;
            normalize: NormalizedAst;
        },
    ) => {
        ".meta": { numOfUselessLoops: number };
        results: { certainty: Certain; name: string; range: SourceRange }[];
    }