quad-roblox가 quad-base를 런타임 주입(QuadRoblox(Quad): QuadRoblox)으로만 받으면 pesde 의존 선언이 필요 없어 보이지만, 타입 참조용 require도 런타임에 실제 실행됨을 실측 확인 — dev-dependency로 두면 게시 후 소비자 환경에서 크래시함. 해법으로 구현 없는 타입 계약 전용 워크스페이스 패키지 quad-types 신설, quad-base/quad-roblox 모두 이것만 의존하도록 전환. AddPlugin<Self,P>(self:Self,fn:(Self)->P):Self&P — 제네릭 self로 둬야 체이닝이 누적됨을 실측 확인(고정하면 이전 확장을 잃음), quad-base에 실제 mutate 기반 구현 반영. CheckedQuad<T> 버전 체크는 배선하며 세 번 깨짐 — error() 대신 print+types.never, 함수 본문 로컬 별칭 대신 리턴 타입 표현식에 직접, 그리고 가장 중요하게 type function을 한 번이라도 거친 값(패스스루 포함)은 이후 AddPlugin 같은 제네릭 self 체이닝이 조용히 깨진다는 새 Luau 함정 발견 — typing-limits.md §6으로 승격. 최종 설계(검증 결과를 원본과 격리된 가상 필드로)만 AddPlugin과 완전히 호환. 부수로 quad-base 자신도 quad-types workspace 의존 때문에 CLI symlink 함정(지난 세션 발견)에 걸림 — 로컬 테스트용 symlink 실체화로 임시 우회. Co-authored-by: qwreey <me@qwreey.moe>
31 lines
813 B
TOML
31 lines
813 B
TOML
std = "luau"
|
|
exclude = ["**/.pesde/*", "*_packages/*"]
|
|
|
|
[lints]
|
|
almost_swapped = "deny"
|
|
constant_table_comparison = "deny"
|
|
deprecated = "warn"
|
|
divide_by_zero = "warn"
|
|
empty_if = "deny"
|
|
empty_loop = "deny"
|
|
high_cyclomatic_complexity = "warn"
|
|
if_same_then_else = "deny"
|
|
ifs_same_cond = "warn"
|
|
incorrect_standard_library_use = "deny"
|
|
manual_table_clone = "warn"
|
|
mismatched_arg_count = "deny"
|
|
mixed_table = "allow"
|
|
multiple_statements = "deny"
|
|
must_use = "warn"
|
|
parenthese_conditions = "deny"
|
|
suspicious_reverse_loop = "deny"
|
|
type_check_inside_call = "deny"
|
|
unbalanced_assignments = "warn"
|
|
undefined_variable = "deny"
|
|
unscoped_variables = "deny"
|
|
unused_variable = "warn"
|
|
|
|
[config]
|
|
empty_if = { comments_count = true }
|
|
empty_loop = { comments_count = true }
|
|
multiple_statements = { one_line_if = "break-return-only" }
|