From acfcd74ffb1f2748c5232464664b6357ebfdba1a Mon Sep 17 00:00:00 2001 From: xieguigang Date: Sat, 16 Jan 2021 20:07:46 +0800 Subject: [PATCH] fix of object member reference --- LINQ/LINQ/Interpreter/Expressions/BinaryExpression.vb | 5 +++++ LINQ/LINQ/Interpreter/Expressions/MemberReference.vb | 8 ++++++++ LINQ/LINQ/Runtime/DataSourceDriver.vb | 2 +- LINQ/LINQ/Runtime/Registry.vb | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/LINQ/LINQ/Interpreter/Expressions/BinaryExpression.vb b/LINQ/LINQ/Interpreter/Expressions/BinaryExpression.vb index 97cf2cc..35c557b 100644 --- a/LINQ/LINQ/Interpreter/Expressions/BinaryExpression.vb +++ b/LINQ/LINQ/Interpreter/Expressions/BinaryExpression.vb @@ -36,6 +36,11 @@ Namespace Interpreter.Expressions Case ">" : Return x > y Case "<" : Return x < y Case "=" : Return x = y + + Case ">=" : Return x >= y + Case "<=" : Return x <= y + Case "<>" : Return x <> y + Case Else Throw New NotImplementedException End Select diff --git a/LINQ/LINQ/Interpreter/Expressions/MemberReference.vb b/LINQ/LINQ/Interpreter/Expressions/MemberReference.vb index 29db668..4be4cba 100644 --- a/LINQ/LINQ/Interpreter/Expressions/MemberReference.vb +++ b/LINQ/LINQ/Interpreter/Expressions/MemberReference.vb @@ -1,4 +1,5 @@ Imports LINQ.Runtime +Imports Microsoft.VisualBasic.My.JavaScript Imports any = Microsoft.VisualBasic.Scripting Namespace Interpreter.Expressions @@ -23,6 +24,13 @@ Namespace Interpreter.Expressions Public Overrides Function Exec(env As Environment) As Object Dim symbol As Object = Me.symbol.Exec(env) + If symbol Is Nothing Then + Throw New NullReferenceException + End If + + If TypeOf symbol Is JavaScriptObject Then + Return DirectCast(symbol, JavaScriptObject)(memberName) + End If Throw New NotImplementedException() End Function diff --git a/LINQ/LINQ/Runtime/DataSourceDriver.vb b/LINQ/LINQ/Runtime/DataSourceDriver.vb index 46c247a..ca8474c 100644 --- a/LINQ/LINQ/Runtime/DataSourceDriver.vb +++ b/LINQ/LINQ/Runtime/DataSourceDriver.vb @@ -9,7 +9,7 @@ Namespace Runtime End Class - Public Class CsvDataFrameDriver : Inherits DataSourceDriver + Public Class DataFrameDriver : Inherits DataSourceDriver Public Overrides Iterator Function ReadFromUri(uri As String) As IEnumerable(Of Object) Dim dataframe As DataFrame = DataFrame.Load(uri) diff --git a/LINQ/LINQ/Runtime/Registry.vb b/LINQ/LINQ/Runtime/Registry.vb index b00d0f7..8c40ada 100644 --- a/LINQ/LINQ/Runtime/Registry.vb +++ b/LINQ/LINQ/Runtime/Registry.vb @@ -13,7 +13,7 @@ Public Function GetReader(type As String) As DataSourceDriver If type = "row" Then - Return New CsvDataFrameDriver + Return New DataFrameDriver Else Throw New MissingPrimaryKeyException End If