summaryrefslogtreecommitdiff
path: root/internal/rpn
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-24 14:15:26 +0300
committerPaul Buetow <paul@buetow.org>2026-05-24 14:15:26 +0300
commitc8b7f1dddd63f1ef02fb9414cfcff5727e98a911 (patch)
tree4109718598cfbb8cfa98c7a4e0d4f130d902aab5 /internal/rpn
parenta8bf293f048b91c912c77768b6a7859f58739e9c (diff)
Add compile-time interface satisfaction checks (xj)
Add var _ Interface assertions to verify implementations at compile time: - internal/rpn/variables.go: assert *Variables against VariableReader, VariableWriter, VariablePersistence, and VariableStore - internal/repl/handlers.go: assert *BuiltInCommandHandler, *RPNHandler, *PercentageHandler, and *ErrorHandler against CommandHandler (BaseHandler intentionally excluded as it lacks a Handle method and is only meant for embedding) - internal/repl/completer.go: assert *AutoCompleteAdapter against readline.AutoCompleter (adds readline import) Note: internal/rpn/constants.go already had assertions in place.
Diffstat (limited to 'internal/rpn')
-rw-r--r--internal/rpn/variables.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/internal/rpn/variables.go b/internal/rpn/variables.go
index 0ebb52f..eab6546 100644
--- a/internal/rpn/variables.go
+++ b/internal/rpn/variables.go
@@ -65,6 +65,14 @@ type VariableStore interface {
VariablePersistence
}
+// Ensure Variables implements all variable interfaces at compile time.
+var (
+ _ VariableReader = (*Variables)(nil)
+ _ VariableWriter = (*Variables)(nil)
+ _ VariablePersistence = (*Variables)(nil)
+ _ VariableStore = (*Variables)(nil)
+)
+
// NewVariables creates and initializes a new Variables instance.
func NewVariables() *Variables {
return &Variables{