From 2f8e181b13f7281da43509711055f4dd27d4fa78 Mon Sep 17 00:00:00 2001 From: zhangxun <1958638841@qq.com> Date: Tue, 17 Jun 2025 21:47:06 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E7=A7=BB=E9=99=A4=20Optional=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jcnc/snow/compiler/ir/builder/IRContext.java | 10 +++++----- .../jcnc/snow/compiler/ir/utils/ExpressionUtils.java | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/jcnc/snow/compiler/ir/builder/IRContext.java b/src/main/java/org/jcnc/snow/compiler/ir/builder/IRContext.java index 6e88776..bfff243 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/builder/IRContext.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/builder/IRContext.java @@ -36,7 +36,7 @@ public class IRContext { /** * 当前声明变量的类型,不在声明变量时为空 */ - private Optional varType; + private String varType; /** * 构造一个新的 IRContext,并将指定的 IRFunction 与作用域关联。 @@ -48,7 +48,7 @@ public class IRContext { this.scope = new IRBuilderScope(); // 关联作用域与 IRFunction,以便在声明变量时申请寄存器 this.scope.attachFunction(function); - this.varType = Optional.empty(); + this.varType = null; } /** @@ -99,7 +99,7 @@ public class IRContext { * * @return 当前 declare 的变量类型 */ - public Optional getVarType() { + public String getVarType() { return varType; } @@ -108,7 +108,7 @@ public class IRContext { * */ public void setVarType(String type) { - this.varType = Optional.of(type); + this.varType = type; } /** @@ -116,6 +116,6 @@ public class IRContext { * */ public void clearVarType() { - this.varType = Optional.empty(); + this.varType = null; } } diff --git a/src/main/java/org/jcnc/snow/compiler/ir/utils/ExpressionUtils.java b/src/main/java/org/jcnc/snow/compiler/ir/utils/ExpressionUtils.java index 15a7407..8d48011 100644 --- a/src/main/java/org/jcnc/snow/compiler/ir/utils/ExpressionUtils.java +++ b/src/main/java/org/jcnc/snow/compiler/ir/utils/ExpressionUtils.java @@ -66,8 +66,8 @@ public class ExpressionUtils { String digits = switch (suffix) { case 'b','s','l','f','d' -> value.substring(0, value.length() - 1); default -> { - if (ctx.getVarType().isPresent()) { - final var receiverType = ctx.getVarType().get(); + if (ctx.getVarType() != null) { + final var receiverType = ctx.getVarType(); switch (receiverType) { case "byte" -> suffix = 'b'; case "short" -> suffix = 's';