From 47654aee38fe2a0af44116c11130544a9a71aeb8 Mon Sep 17 00:00:00 2001 From: sergeych Date: Wed, 4 Feb 2026 03:30:56 +0300 Subject: [PATCH] Enforce compile-time only member access --- .../lyng/bytecode/CmdCallSiteCacheAndroid.kt | 30 -- .../kotlin/net/sergeych/lyng/Compiler.kt | 36 +- ...ception.kt => BytecodeCompileException.kt} | 2 +- .../lyng/bytecode/BytecodeCompiler.kt | 414 ++++++++++++------ .../lyng/bytecode/BytecodeStatement.kt | 15 +- .../net/sergeych/lyng/bytecode/CmdBuilder.kt | 16 - .../lyng/bytecode/CmdCallSiteCache.kt | 21 - .../sergeych/lyng/bytecode/CmdDisassembler.kt | 9 - .../net/sergeych/lyng/bytecode/CmdFunction.kt | 1 - .../net/sergeych/lyng/bytecode/CmdRuntime.kt | 143 ------ .../sergeych/lyng/bytecode/MethodCallSite.kt | 241 ---------- .../net/sergeych/lyng/bytecode/Opcode.kt | 3 - .../lyng/bytecode/CmdCallSiteCacheJs.kt | 25 -- .../lyng/bytecode/CmdCallSiteCacheJvm.kt | 30 -- .../lyng/bytecode/CmdCallSiteCacheNative.kt | 26 -- .../lyng/bytecode/CmdCallSiteCacheWasm.kt | 25 -- lynglib/stdlib/lyng/root.lyng | 9 +- notes/compile_time_name_resolution_spec.md | 1 + 18 files changed, 333 insertions(+), 714 deletions(-) delete mode 100644 lynglib/src/androidMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCacheAndroid.kt rename lynglib/src/commonMain/kotlin/net/sergeych/lyng/bytecode/{BytecodeFallbackException.kt => BytecodeCompileException.kt} (96%) delete mode 100644 lynglib/src/commonMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCache.kt delete mode 100644 lynglib/src/commonMain/kotlin/net/sergeych/lyng/bytecode/MethodCallSite.kt delete mode 100644 lynglib/src/jsMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCacheJs.kt delete mode 100644 lynglib/src/jvmMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCacheJvm.kt delete mode 100644 lynglib/src/nativeMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCacheNative.kt delete mode 100644 lynglib/src/wasmJsMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCacheWasm.kt diff --git a/lynglib/src/androidMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCacheAndroid.kt b/lynglib/src/androidMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCacheAndroid.kt deleted file mode 100644 index 897335d..0000000 --- a/lynglib/src/androidMain/kotlin/net/sergeych/lyng/bytecode/CmdCallSiteCacheAndroid.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2026 Sergey S. Chernov - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.sergeych.lyng.bytecode - -import java.util.IdentityHashMap - -internal actual object CmdCallSiteCache { - private val cache = ThreadLocal.withInitial { - IdentityHashMap>() - } - - actual fun methodCallSites(fn: CmdFunction): MutableMap { - val map = cache.get() - return map.getOrPut(fn) { mutableMapOf() } - } -} diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt index a2bc48d..85e6ff7 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt @@ -1079,7 +1079,9 @@ class Compiler( block, "