gitextract_d5o1d0tz/ ├── .dockerignore ├── .ghci ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── build.yml │ └── ci.yml ├── .gitignore ├── .hlint.yaml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── cabal.project ├── cbits/ │ └── semantic_analysis.dl ├── docs/ │ ├── architecture_choices.md │ └── getting_started.md ├── eclair-lang.cabal ├── hie.yaml ├── lib/ │ ├── Eclair/ │ │ ├── AST/ │ │ │ ├── Analysis.hs │ │ │ ├── Codegen.hs │ │ │ ├── IR.hs │ │ │ ├── Lower.hs │ │ │ ├── Transforms/ │ │ │ │ ├── ConstantFolding.hs │ │ │ │ ├── DeadCodeElimination.hs │ │ │ │ ├── NormalizeRules.hs │ │ │ │ ├── RemoveAliases.hs │ │ │ │ └── ReplaceStrings.hs │ │ │ └── Transforms.hs │ │ ├── ArgParser.hs │ │ ├── Common/ │ │ │ ├── Config.hs │ │ │ ├── Extern.hs │ │ │ ├── Id.hs │ │ │ ├── Literal.hs │ │ │ ├── Location.hs │ │ │ ├── Operator.hs │ │ │ └── Pretty.hs │ │ ├── Comonads.hs │ │ ├── EIR/ │ │ │ ├── IR.hs │ │ │ ├── Lower/ │ │ │ │ ├── API.hs │ │ │ │ ├── Codegen.hs │ │ │ │ └── Externals.hs │ │ │ └── Lower.hs │ │ ├── Error.hs │ │ ├── JSON.hs │ │ ├── LLVM/ │ │ │ ├── Allocator/ │ │ │ │ ├── Arena.hs │ │ │ │ ├── Common.hs │ │ │ │ ├── Malloc.hs │ │ │ │ └── Page.hs │ │ │ ├── BTree/ │ │ │ │ ├── Bounds.hs │ │ │ │ ├── Compare.hs │ │ │ │ ├── Create.hs │ │ │ │ ├── Destroy.hs │ │ │ │ ├── Find.hs │ │ │ │ ├── Insert.hs │ │ │ │ ├── Iterator.hs │ │ │ │ ├── Size.hs │ │ │ │ └── Types.hs │ │ │ ├── BTree.hs │ │ │ ├── Codegen.hs │ │ │ ├── Config.hs │ │ │ ├── Externals.hs │ │ │ ├── Hash.hs │ │ │ ├── HashMap.hs │ │ │ ├── Metadata.hs │ │ │ ├── Symbol.hs │ │ │ ├── SymbolTable.hs │ │ │ ├── Table.hs │ │ │ ├── Template.hs │ │ │ └── Vector.hs │ │ ├── LSP/ │ │ │ ├── Handlers/ │ │ │ │ ├── Diagnostics.hs │ │ │ │ ├── DocumentHighlight.hs │ │ │ │ └── Hover.hs │ │ │ ├── Handlers.hs │ │ │ ├── JSON.hs │ │ │ ├── Monad.hs │ │ │ ├── Types.hs │ │ │ └── VFS.hs │ │ ├── LSP.hs │ │ ├── Parser.hs │ │ ├── RA/ │ │ │ ├── Codegen.hs │ │ │ ├── IR.hs │ │ │ ├── IndexSelection.hs │ │ │ ├── Lower.hs │ │ │ ├── Transforms/ │ │ │ │ └── HoistConstraints.hs │ │ │ └── Transforms.hs │ │ ├── Souffle/ │ │ │ └── IR.hs │ │ ├── Transform.hs │ │ └── TypeSystem.hs │ ├── Eclair.hs │ └── Prelude.hs ├── src/ │ └── eclair/ │ └── Main.hs └── tests/ ├── .gitignore ├── ast_transforms/ │ ├── constant_folding.eclair │ ├── copy_propagation.eclair │ ├── dead_code_elimination.eclair │ ├── remove_contradictions.eclair │ └── shift_assignments.eclair ├── check.sh ├── eclair/ │ ├── Test/ │ │ └── Eclair/ │ │ ├── ArgParserSpec.hs │ │ ├── JSONSpec.hs │ │ ├── LLVM/ │ │ │ ├── Allocator/ │ │ │ │ ├── MallocSpec.hs │ │ │ │ ├── PageSpec.hs │ │ │ │ └── Utils.hs │ │ │ ├── BTreeSpec.hs │ │ │ ├── HashMapSpec.hs │ │ │ ├── HashSpec.hs │ │ │ ├── SymbolSpec.hs │ │ │ ├── SymbolTableSpec.hs │ │ │ ├── SymbolUtils.hs │ │ │ └── VectorSpec.hs │ │ ├── LSP/ │ │ │ ├── HandlersSpec.hs │ │ │ └── JSONSpec.hs │ │ └── RA/ │ │ └── IndexSelectionSpec.hs │ ├── fixtures/ │ │ └── lsp/ │ │ ├── document_highlight.eclair │ │ ├── hover.eclair │ │ ├── invalid_syntax.eclair │ │ ├── semantic_errors.eclair │ │ ├── type_errors.eclair │ │ └── unparsable.eclair │ └── test.hs ├── end_to_end/ │ ├── compile_and_run_native.eclair │ ├── compile_and_run_wasm.eclair │ └── compile_and_run_with_extern.eclair ├── hello.eclair ├── lit.cfg ├── lowering/ │ ├── arithmetic.eclair │ ├── clause_with_same_vars.eclair │ ├── comparisons.eclair │ ├── different_types.eclair │ ├── extern_definitions.eclair │ ├── multiple_clauses_same_name.eclair │ ├── multiple_rule_clauses.eclair │ ├── mutually_recursive_rules.eclair │ ├── negation.eclair │ ├── negation_with_wildcards.eclair │ ├── no_top_level_facts.eclair │ ├── recursive_mix_of_rules.eclair │ ├── single_non_recursive_rule.eclair │ ├── single_recursive_rule.eclair │ ├── stratification.eclair │ ├── top_level_facts.eclair │ └── wasm_codegen.eclair ├── parser/ │ ├── error_recovery.eclair │ ├── file_not_found.eclair │ └── valid.eclair ├── runtime/ │ ├── hashmap_test.eclair │ ├── symbol_table_test.eclair │ └── vector_test.eclair ├── semantic_analysis/ │ ├── cyclic_negation.eclair │ ├── dead_internal_relation.eclair │ ├── invalid_extern_usage.eclair │ ├── invalid_options_usage.eclair │ ├── invalid_wildcard_usage.eclair │ ├── no_output_relations.eclair │ ├── unconstrained_variables.eclair │ ├── ungrounded_variables.eclair │ ├── ungrounded_variables_arithmetic.eclair │ ├── ungrounded_variables_comparisons.eclair │ └── ungrounded_variables_negations.eclair ├── string_support/ │ ├── encode_decode_string.eclair │ ├── encode_decode_string_native.eclair │ └── encode_decode_string_wasm.eclair ├── transpilation/ │ └── souffle.eclair ├── typesystem/ │ ├── arg_count_mismatch.eclair │ ├── arithmetic.eclair │ ├── comparisons.eclair │ ├── duplicate_type_declarations.eclair │ ├── extern_definitions.eclair │ ├── negation.eclair │ ├── no_rules_for_type.eclair │ ├── type_mismatch_in_rule.eclair │ ├── type_mismatch_in_rule_body.eclair │ ├── type_mismatch_in_rule_head.eclair │ ├── type_mismatch_top_level_atoms.eclair │ ├── typed_holes.eclair │ ├── unification_failure.eclair │ ├── unknown_atom_in_rule_body.eclair │ ├── unknown_atom_in_rule_head.eclair │ ├── unknown_atoms.eclair │ ├── unknown_top_level_atoms.eclair │ └── valid.eclair └── utils/ └── extract_snippet