@@ -22,6 +22,7 @@ import (
22
22
23
23
// EvaluateMultiplication will evaluate multiplication operation over two value
24
24
func EvaluateMultiplication (left , right reflect.Value ) (reflect.Value , error ) {
25
+ left , right = GetValueElem (left ), GetValueElem (right )
25
26
switch left .Kind () {
26
27
case reflect .Int , reflect .Int8 , reflect .Int16 , reflect .Int32 , reflect .Int64 :
27
28
lv := left .Int ()
@@ -75,6 +76,7 @@ func EvaluateMultiplication(left, right reflect.Value) (reflect.Value, error) {
75
76
76
77
// EvaluateDivision will evaluate division operation over two value
77
78
func EvaluateDivision (left , right reflect.Value ) (reflect.Value , error ) {
79
+ left , right = GetValueElem (left ), GetValueElem (right )
78
80
switch left .Kind () {
79
81
case reflect .Int , reflect .Int8 , reflect .Int16 , reflect .Int32 , reflect .Int64 :
80
82
lv := left .Int ()
@@ -128,6 +130,7 @@ func EvaluateDivision(left, right reflect.Value) (reflect.Value, error) {
128
130
129
131
// EvaluateModulo will evaluate modulo operation over two value
130
132
func EvaluateModulo (left , right reflect.Value ) (reflect.Value , error ) {
133
+ left , right = GetValueElem (left ), GetValueElem (right )
131
134
switch left .Kind () {
132
135
case reflect .Int , reflect .Int8 , reflect .Int16 , reflect .Int32 , reflect .Int64 :
133
136
lv := left .Int ()
@@ -160,6 +163,7 @@ func EvaluateModulo(left, right reflect.Value) (reflect.Value, error) {
160
163
161
164
// EvaluateAddition will evaluate addition operation over two value
162
165
func EvaluateAddition (left , right reflect.Value ) (reflect.Value , error ) {
166
+ left , right = GetValueElem (left ), GetValueElem (right )
163
167
switch left .Kind () {
164
168
case reflect .String :
165
169
lv := left .String ()
@@ -247,6 +251,7 @@ func EvaluateAddition(left, right reflect.Value) (reflect.Value, error) {
247
251
248
252
// EvaluateSubtraction will evaluate subtraction operation over two value
249
253
func EvaluateSubtraction (left , right reflect.Value ) (reflect.Value , error ) {
254
+ left , right = GetValueElem (left ), GetValueElem (right )
250
255
switch left .Kind () {
251
256
case reflect .Int , reflect .Int8 , reflect .Int16 , reflect .Int32 , reflect .Int64 :
252
257
lv := left .Int ()
@@ -300,6 +305,7 @@ func EvaluateSubtraction(left, right reflect.Value) (reflect.Value, error) {
300
305
301
306
// EvaluateBitAnd will evaluate Bitwise And operation over two value
302
307
func EvaluateBitAnd (left , right reflect.Value ) (reflect.Value , error ) {
308
+ left , right = GetValueElem (left ), GetValueElem (right )
303
309
switch left .Kind () {
304
310
case reflect .Int , reflect .Int8 , reflect .Int16 , reflect .Int32 , reflect .Int64 :
305
311
lv := left .Int ()
@@ -332,6 +338,7 @@ func EvaluateBitAnd(left, right reflect.Value) (reflect.Value, error) {
332
338
333
339
// EvaluateBitOr will evaluate Bitwise Or operation over two value
334
340
func EvaluateBitOr (left , right reflect.Value ) (reflect.Value , error ) {
341
+ left , right = GetValueElem (left ), GetValueElem (right )
335
342
switch left .Kind () {
336
343
case reflect .Int , reflect .Int8 , reflect .Int16 , reflect .Int32 , reflect .Int64 :
337
344
lv := left .Int ()
@@ -364,6 +371,7 @@ func EvaluateBitOr(left, right reflect.Value) (reflect.Value, error) {
364
371
365
372
// EvaluateGreaterThan will evaluate GreaterThan operation over two value
366
373
func EvaluateGreaterThan (left , right reflect.Value ) (reflect.Value , error ) {
374
+ left , right = GetValueElem (left ), GetValueElem (right )
367
375
switch left .Kind () {
368
376
case reflect .String :
369
377
lv := left .String ()
@@ -431,6 +439,7 @@ func EvaluateGreaterThan(left, right reflect.Value) (reflect.Value, error) {
431
439
432
440
// EvaluateLesserThan will evaluate LesserThan operation over two value
433
441
func EvaluateLesserThan (left , right reflect.Value ) (reflect.Value , error ) {
442
+ left , right = GetValueElem (left ), GetValueElem (right )
434
443
switch left .Kind () {
435
444
case reflect .String :
436
445
lv := left .String ()
@@ -498,6 +507,7 @@ func EvaluateLesserThan(left, right reflect.Value) (reflect.Value, error) {
498
507
499
508
// EvaluateGreaterThanEqual will evaluate GreaterThanEqual operation over two value
500
509
func EvaluateGreaterThanEqual (left , right reflect.Value ) (reflect.Value , error ) {
510
+ left , right = GetValueElem (left ), GetValueElem (right )
501
511
switch left .Kind () {
502
512
case reflect .String :
503
513
lv := left .String ()
@@ -565,6 +575,7 @@ func EvaluateGreaterThanEqual(left, right reflect.Value) (reflect.Value, error)
565
575
566
576
// EvaluateLesserThanEqual will evaluate LesserThanEqual operation over two value
567
577
func EvaluateLesserThanEqual (left , right reflect.Value ) (reflect.Value , error ) {
578
+ left , right = GetValueElem (left ), GetValueElem (right )
568
579
switch left .Kind () {
569
580
case reflect .String :
570
581
lv := left .String ()
@@ -632,6 +643,7 @@ func EvaluateLesserThanEqual(left, right reflect.Value) (reflect.Value, error) {
632
643
633
644
// EvaluateEqual will evaluate Equal operation over two value
634
645
func EvaluateEqual (left , right reflect.Value ) (reflect.Value , error ) {
646
+ left , right = GetValueElem (left ), GetValueElem (right )
635
647
switch left .Kind () {
636
648
case reflect .String :
637
649
lv := left .String ()
@@ -704,6 +716,7 @@ func EvaluateEqual(left, right reflect.Value) (reflect.Value, error) {
704
716
705
717
// EvaluateNotEqual will evaluate NotEqual operation over two value
706
718
func EvaluateNotEqual (left , right reflect.Value ) (reflect.Value , error ) {
719
+ left , right = GetValueElem (left ), GetValueElem (right )
707
720
switch left .Kind () {
708
721
case reflect .String :
709
722
lv := left .String ()
@@ -776,6 +789,7 @@ func EvaluateNotEqual(left, right reflect.Value) (reflect.Value, error) {
776
789
777
790
// EvaluateLogicAnd will evaluate LogicalAnd operation over two value
778
791
func EvaluateLogicAnd (left , right reflect.Value ) (reflect.Value , error ) {
792
+ left , right = GetValueElem (left ), GetValueElem (right )
779
793
if left .Kind () == reflect .Bool && right .Kind () == reflect .Bool {
780
794
lv := left .Bool ()
781
795
rv := right .Bool ()
@@ -786,6 +800,7 @@ func EvaluateLogicAnd(left, right reflect.Value) (reflect.Value, error) {
786
800
787
801
// EvaluateLogicOr will evaluate LogicalOr operation over two value
788
802
func EvaluateLogicOr (left , right reflect.Value ) (reflect.Value , error ) {
803
+ left , right = GetValueElem (left ), GetValueElem (right )
789
804
if left .Kind () == reflect .Bool && right .Kind () == reflect .Bool {
790
805
lv := left .Bool ()
791
806
rv := right .Bool ()
@@ -796,6 +811,7 @@ func EvaluateLogicOr(left, right reflect.Value) (reflect.Value, error) {
796
811
797
812
// EvaluateLogicSingle will evaluate single expression value
798
813
func EvaluateLogicSingle (left reflect.Value ) (reflect.Value , error ) {
814
+ left = GetValueElem (left )
799
815
if left .Kind () == reflect .Bool {
800
816
lv := left .Bool ()
801
817
return reflect .ValueOf (lv ), nil
0 commit comments