From 77a928e36430995ad60cfd1d52a3bf47fb608472 Mon Sep 17 00:00:00 2001 From: AnCoder <5988554+colorfulldays@users.noreply.github.com> Date: Wed, 27 Sep 2023 20:36:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:double.infinity=20=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dart2dsl/lib/fairdsl/fair_ast_gen.dart | 3 +++ dart2dsl/lib/fairdsl/fair_dsl_gen.dart | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/dart2dsl/lib/fairdsl/fair_ast_gen.dart b/dart2dsl/lib/fairdsl/fair_ast_gen.dart index f41a9f4c..a7faf11c 100644 --- a/dart2dsl/lib/fairdsl/fair_ast_gen.dart +++ b/dart2dsl/lib/fairdsl/fair_ast_gen.dart @@ -413,6 +413,9 @@ class CustomAstVisitor extends SimpleAstVisitor { @override Map? visitPrefixExpression(PrefixExpression node){ + if(node.operator.type == TokenType.MINUS && (node.operand is DoubleLiteral || node.operand is IntegerLiteral)){ + return _buildNumericLiteral(num.parse(node.operand.toSource()) * -1); + } return _buildPrefixExpression(_visitNode(node.operand), node.operator.toString(), true); } diff --git a/dart2dsl/lib/fairdsl/fair_dsl_gen.dart b/dart2dsl/lib/fairdsl/fair_dsl_gen.dart index ce91dac6..d6044a11 100644 --- a/dart2dsl/lib/fairdsl/fair_dsl_gen.dart +++ b/dart2dsl/lib/fairdsl/fair_dsl_gen.dart @@ -5,6 +5,7 @@ */ import 'dart:convert'; +import 'dart:io'; import 'package:fair_dart2dsl/fairdsl/fair_ast_logic_unit.dart'; @@ -320,6 +321,20 @@ dynamic _buildWidgetDsl( return dslMap; } +bool isDoubleProperty(PrefixedIdentifier? node) { + if (!(node is PrefixedIdentifier) || node.prefix != 'double') { + return false; + } + + switch (node.identifier) { + case 'infinity': + return true; + default: + stdout.writeln('Fair 不支持该 常量 double ${node.identifier}'); + return false; + } +} + dynamic _buildValueExpression( Expression? valueExpression, FairDslContex? fairDslContex) { var naPaValue; @@ -349,7 +364,7 @@ dynamic _buildValueExpression( naPaValue = valueExpression?.asBooleanLiteral.value; } else if (valueExpression?.isPrefixedIdentifier==true) { if (RegExp(r'^[a-z_]') // widget.** 参数类的特殊处理成#(),兼容1期 - .hasMatch(valueExpression?.asPrefixedIdentifier.prefix??'') && ('widget' != valueExpression?.asPrefixedIdentifier.prefix)) { + .hasMatch(valueExpression?.asPrefixedIdentifier.prefix??'') && ('widget' != valueExpression?.asPrefixedIdentifier.prefix) && !isDoubleProperty(valueExpression?.asPrefixedIdentifier)) { naPaValue = '\$(' + (valueExpression?.asPrefixedIdentifier.prefix??'') + '.' +