Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
86d6642
Remove "do" built in
lefticus Apr 13, 2025
b111009
Add "begin" support
lefticus Apr 13, 2025
8faad32
Add 'cond' built in function
lefticus Apr 13, 2025
dbabf22
Merge implementations of string like things
lefticus Apr 14, 2025
e11fc55
Add documentation notes from Claude
lefticus Apr 14, 2025
c5be65e
Add character escape sequence processing
lefticus Apr 14, 2025
bb2c986
Add tests to try and reach 100% code coverage
lefticus Apr 14, 2025
c977d62
Add "error?" and fix issue with floating point parsing
lefticus Apr 14, 2025
202d482
Tests passing for coverage increasing
lefticus Apr 14, 2025
bd98ade
Progress towards better float parsing
lefticus Apr 15, 2025
25c619a
Add coverage report generation
lefticus Apr 15, 2025
e5bd2c8
Number parsing fixes and tests
lefticus Apr 15, 2025
fd660fb
Add failing test for bad character escape sequence
lefticus Apr 15, 2025
bf0c0e9
98% code coverage obtained
lefticus Apr 16, 2025
afdfd98
Fix return type from parse to be more correct
lefticus Apr 16, 2025
c3dcf67
clang-format applied
lefticus Apr 16, 2025
1c47e7b
Add failing test for addition of mismatched types
lefticus Apr 16, 2025
c06d308
Add test case against adding ' symbols
lefticus Apr 17, 2025
a591060
Get quoting behavior in line with mainstream scheme
lefticus Apr 18, 2025
f10ce45
First pass at TODO list
lefticus Apr 19, 2025
69c6da5
Scoping and recursion fixes:
lefticus Apr 19, 2025
fe60829
Add predicates for more types
lefticus Apr 21, 2025
8079422
Fix failing tests
lefticus Apr 21, 2025
6e08f37
Document TODO and implementation strategies
lefticus Apr 21, 2025
f382340
Add missing type_predicate_tests
lefticus Apr 22, 2025
e4575e9
Fix incorrect warning from gcc
lefticus May 10, 2025
b00c759
Get clang-tidy narrowed down
lefticus May 10, 2025
6670c3e
Fix fuzz_tester implementation and cons_expr braces
lefticus May 13, 2025
f62136e
Add file input support to CLI and tests
lefticus May 13, 2025
1d6120f
Fix unterminated escape sequence handling in strings
lefticus May 20, 2025
c2f367d
Document branch coverage analysis process in TODO.md
lefticus May 22, 2025
5c2aa2f
Add targeted edge case tests to improve branch coverage
lefticus May 22, 2025
c8a48be
Enhance branch coverage with comprehensive error handling and edge ca…
lefticus May 22, 2025
c8ad730
Add comprehensive branch coverage tests improving coverage from 34% t…
lefticus May 22, 2025
9f2e010
Add advanced error path and edge case tests targeting specific uncove…
lefticus May 22, 2025
2678a8b
Make car and cdr consistent: both now error on empty lists
lefticus May 24, 2025
4f07930
Increase coverage testing
lefticus May 26, 2025
14e3d68
:art: Committing clang-format changes
Jun 24, 2025
b4bd8dd
Fix clang and gcc build errors, upgrade gcc
lefticus Jun 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,19 @@ WarningsAsErrors: ''
HeaderFilterRegex: ''
FormatStyle: none

# Command line options
ExtraArgs: [
'-Wno-unknown-warning-option',
'-Wno-ignored-optimization-argument',
'-Wno-unused-command-line-argument',
'-Wno-unknown-argument',
'-Wno-gcc-compat'
]

# Quiet mode is set via command line with --quiet
# It doesn't have a YAML equivalent

CheckOptions:
readability-identifier-length.IgnoredVariableNames: 'x|y|z|id|ch'
readability-identifier-length.IgnoredParameterNames: 'x|y|z|id|ch'





4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
- ubuntu-22.04
compiler:
# you can specify the version after `-` like "llvm-16.0.0".
- gcc-13
- gcc-14
generator:
- "Ninja Multi-Config"
build_type:
Expand All @@ -45,7 +45,7 @@ jobs:
include:
# Add appropriate variables for gcov version required. This will intentionally break
# if you try to use a compiler that does not have gcov set
- compiler: gcc-13
- compiler: gcc-14
gcov_executable: gcov
enable_ipo: On

Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,5 @@ $RECYCLE.BIN/
.TemporaryItems
ehthumbs.db
Thumbs.db

**/.claude/settings.local.json
11 changes: 11 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

You are an expert in C++. You use C++23 and prefer to use constexpr wherever possible. You always apply C++ Best Practices as taught by Jason Turner.

You are also an expert in scheme-like languages and know the pros and cons of various design decisions.



## Build Commands
- Configure: `cmake -S . -B ./build`
- Build: `cmake --build ./build`
Expand All @@ -16,6 +22,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
- `constexpr_tests` target compiles tests with static assertions
- Will fail to compile if tests fail since they use static assertions
- Makes debugging difficult as you won't see which specific test failed
- Will always fail to compile if there's a fail test; use relaxed_constexpr_tests or directly execute the tests with cons_expr command line tool for debugging
- `relaxed_constexpr_tests` target compiles with runtime assertions
- Preferred for debugging since it shows which specific tests fail
- Use this target when developing/debugging:
Expand Down Expand Up @@ -57,6 +64,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
- Header files follow #ifndef/#define guard pattern
- Entire system is `constexpr` capable unless it uses IO
- Use modern C++ style casts over C-style casts
- Avoid macros completely except for header guards
- Prefer templates, constexpr functions or concepts over macros
- Use `static constexpr` for compile-time known constants
- Prefer local constants within functions over function variables for readability

## Naming and Structure
- Namespace: lefticus
Expand Down
2 changes: 1 addition & 1 deletion Dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ function(cons_expr_setup_dependencies)
endif()

if(NOT TARGET Catch2::Catch2WithMain)
cpmaddpackage("gh:catchorg/Catch2@3.7.0")
cpmaddpackage("gh:catchorg/Catch2@3.8.1")
endif()

if(NOT TARGET CLI11::CLI11)
Expand Down
Loading
Loading