Skip to content

Commit 1db9088

Browse files
author
yongpengliang
committed
fix some bug
1 parent 0daa974 commit 1db9088

9 files changed

Lines changed: 157 additions & 6 deletions

File tree

MangoFix.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "MangoFix"
3-
s.version = "1.1.0"
3+
s.version = "1.1.1"
44
s.summary = "MangoFix"
55
s.description = <<-DESC
66
Mango is a DSL which syntax is very similar to Objective-C,Mango is also an iOS App hotfix SDK. You can use Mango method replace any Objective-C method.

MangoFix.xcodeproj/project.pbxproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@
5656
899672A1224BFE6F00C7DACB /* mango.y in Sources */ = {isa = PBXBuildFile; fileRef = 89967266224BFE6F00C7DACB /* mango.y */; };
5757
899672A2224BFE6F00C7DACB /* mango.l in Sources */ = {isa = PBXBuildFile; fileRef = 89967267224BFE6F00C7DACB /* mango.l */; };
5858
899672A4224BFE6F00C7DACB /* util.m in Sources */ = {isa = PBXBuildFile; fileRef = 89967269224BFE6F00C7DACB /* util.m */; };
59+
89C671B3224E15050092C30F /* MFOperatorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 89C671B2224E15050092C30F /* MFOperatorTest.m */; };
60+
89C671B5224E152D0092C30F /* MFOperatorTest.mg in Resources */ = {isa = PBXBuildFile; fileRef = 89C671B4224E152D0092C30F /* MFOperatorTest.mg */; };
5961
89F96106224CDF2200ADFF07 /* MFAddGlobalVarTest.mg in Resources */ = {isa = PBXBuildFile; fileRef = 89F96105224CDF2200ADFF07 /* MFAddGlobalVarTest.mg */; };
6062
89F96109224CDF3D00ADFF07 /* MFAddGlobalVarTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 89F96108224CDF3D00ADFF07 /* MFAddGlobalVarTest.m */; };
6163
89F9610C224CE3F200ADFF07 /* MFObjectPropertyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 89F9610B224CE3F200ADFF07 /* MFObjectPropertyTest.m */; };
@@ -169,6 +171,9 @@
169171
89967268224BFE6F00C7DACB /* MangoFix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MangoFix.h; sourceTree = "<group>"; };
170172
89967269224BFE6F00C7DACB /* util.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = util.m; sourceTree = "<group>"; };
171173
8996726A224BFE6F00C7DACB /* MFContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFContext.h; sourceTree = "<group>"; };
174+
89C671B1224E15050092C30F /* MFOperatorTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MFOperatorTest.h; sourceTree = "<group>"; };
175+
89C671B2224E15050092C30F /* MFOperatorTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MFOperatorTest.m; sourceTree = "<group>"; };
176+
89C671B4224E152D0092C30F /* MFOperatorTest.mg */ = {isa = PBXFileReference; lastKnownFileType = text; path = MFOperatorTest.mg; sourceTree = "<group>"; };
172177
89F96105224CDF2200ADFF07 /* MFAddGlobalVarTest.mg */ = {isa = PBXFileReference; lastKnownFileType = text; path = MFAddGlobalVarTest.mg; sourceTree = "<group>"; };
173178
89F96107224CDF3D00ADFF07 /* MFAddGlobalVarTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MFAddGlobalVarTest.h; sourceTree = "<group>"; };
174179
89F96108224CDF3D00ADFF07 /* MFAddGlobalVarTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MFAddGlobalVarTest.m; sourceTree = "<group>"; };
@@ -265,6 +270,9 @@
265270
895EC4E6224CC2C90062CBF8 /* MFConditionalReplaceTest.h */,
266271
895EC4E7224CC2C90062CBF8 /* MFConditionalReplaceTest.m */,
267272
8977D892224CD3FA0048A954 /* MFConditionalReplaceTest.mg */,
273+
89C671B1224E15050092C30F /* MFOperatorTest.h */,
274+
89C671B2224E15050092C30F /* MFOperatorTest.m */,
275+
89C671B4224E152D0092C30F /* MFOperatorTest.mg */,
268276
89FC7DB3224C058200AFC0AC /* MFSequentialStatementTest.h */,
269277
89FC7DB1224C058200AFC0AC /* MFSequentialStatementTest.m */,
270278
89FC7DB0224C058200AFC0AC /* MFSequentialStatementTest.mg */,
@@ -506,6 +514,7 @@
506514
8977D897224CD4BD0048A954 /* MFGCDTest.mg in Resources */,
507515
89F96113224CE9C700ADFF07 /* MFOriginalMethodTest.mg in Resources */,
508516
8977D88D224CCF200048A954 /* MFClassMethodReplaceTest.mg in Resources */,
517+
89C671B5224E152D0092C30F /* MFOperatorTest.mg in Resources */,
509518
8977D895224CD4520048A954 /* MFCustomStructDeclareTest.mg in Resources */,
510519
);
511520
runOnlyForDeploymentPostprocessing = 0;
@@ -553,6 +562,7 @@
553562
895EC4E8224CC2C90062CBF8 /* MFConditionalReplaceTest.m in Sources */,
554563
89F9610C224CE3F200ADFF07 /* MFObjectPropertyTest.m in Sources */,
555564
899671A3224BFD2A00C7DACB /* MangoFixTests.m in Sources */,
565+
89C671B3224E15050092C30F /* MFOperatorTest.m in Sources */,
556566
89FC7DB5224C058200AFC0AC /* MFSequentialStatementTest.m in Sources */,
557567
895EC4EE224CC3B10062CBF8 /* MFClassMethodReplaceTest.m in Sources */,
558568
895EC4E2224CC1E30062CBF8 /* MFLoopStatementTest.m in Sources */,

MangoFix/Compiler/lex_yacc/mango.l

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ static void increment_line_number(){
189189

190190

191191

192-
<INITIAL>[-+]?[1-9][0-9]* {
192+
<INITIAL>[1-9][0-9]* {
193193
MFExpression *expression = mf_create_expression(MF_INT_EXPRESSION);
194194
NSInteger val;
195195
sscanf(yytext,"%ld",&val);
@@ -218,7 +218,7 @@ static void increment_line_number(){
218218
}
219219

220220

221-
<INITIAL>[-+]?[0-9]+\.[0-9]+ {
221+
<INITIAL>[0-9]+\.[0-9]+ {
222222
MFExpression *expression = mf_create_expression(MF_DOUBLE_EXPRESSION);
223223
double val;
224224
sscanf(yytext,"%lf",&val);

MangoFix/Execute/eval.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -784,6 +784,8 @@ static void eval_negative_expression(MFInterpreter *inter, MFScopeChain *scope,M
784784
NSCAssert(0, @"line:%zd operator ‘-’ can not use type: %@",expr.expr.lineNumber, value.type.typeName);
785785
break;
786786
}
787+
[inter.stack push:resultValue];
788+
787789
}
788790

789791

MangoFixDemo/Podfile.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PODS:
2-
- MangoFix (1.1.0)
2+
- MangoFix (1.1.1)
33

44
DEPENDENCIES:
55
- MangoFix (from `../`)
@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
99
:path: "../"
1010

1111
SPEC CHECKSUMS:
12-
MangoFix: bbab26da2386881b2e6983138e372830e4e29263
12+
MangoFix: 5948edb6ce3b979c5aa55cc3f6fd344320cb34cb
1313

1414
PODFILE CHECKSUM: 34961e3ae86f606667df9385af573565446ef99d
1515

16-
COCOAPODS: 1.5.3
16+
COCOAPODS: 1.6.1

MangoFixTests/MFOperatorTest.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// MFOperatorTest.h
3+
// MangoFixTests
4+
//
5+
// Created by yongpengliang on 2019/3/29.
6+
// Copyright © 2019 yongpengliang. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
NS_ASSUME_NONNULL_BEGIN
12+
13+
@interface MFOperatorTest : NSObject
14+
15+
- (BOOL)testOperator;
16+
17+
@end
18+
19+
NS_ASSUME_NONNULL_END

MangoFixTests/MFOperatorTest.m

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//
2+
// MFOperatorTest.m
3+
// MangoFixTests
4+
//
5+
// Created by yongpengliang on 2019/3/29.
6+
// Copyright © 2019 yongpengliang. All rights reserved.
7+
//
8+
9+
#import "MFOperatorTest.h"
10+
11+
@implementation MFOperatorTest
12+
13+
- (BOOL)testOperator{
14+
return NO;
15+
}
16+
17+
@end

MangoFixTests/MFOperatorTest.mg

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
2+
class MFOperatorTest : NSObject {
3+
4+
- (BOOL)testOperator{
5+
int a = 10;
6+
int b = 20;
7+
BOOL c = NO;
8+
a = a + b;
9+
if (a != 30) {
10+
return NO;
11+
}
12+
13+
a = a - b;
14+
if (a != 10) {
15+
return NO;
16+
}
17+
18+
a = a * b;
19+
if (a != 200) {
20+
return NO;
21+
}
22+
23+
a = a/b;
24+
if (a != 10) {
25+
return 10;
26+
}
27+
28+
a = a % 3;
29+
if (a != 1) {
30+
return NO;
31+
}
32+
33+
a = -a;
34+
if (a != -1) {
35+
return NO;
36+
}
37+
38+
a += 11;
39+
if (a != 10) {
40+
return NO;
41+
}
42+
43+
a -= 5;
44+
if (a != 5) {
45+
return NO;
46+
}
47+
48+
a *= 10;
49+
if (a != 50) {
50+
return NO;
51+
}
52+
53+
a /= 3;
54+
if (a != 16) {
55+
return NO;
56+
}
57+
58+
a %= 5;
59+
if (a != 1) {
60+
return NO;
61+
}
62+
63+
a++;
64+
if (a != 2) {
65+
return NO;
66+
}
67+
68+
a--;
69+
if (a != 1) {
70+
return NO;
71+
}
72+
73+
c = a == 1;
74+
if (!c) {
75+
return NO;
76+
}
77+
78+
c = !c;
79+
if (c) {
80+
return NO;
81+
}
82+
83+
c = c || YES;
84+
if (!c) {
85+
return NO;
86+
}
87+
88+
c = c && NO;
89+
if (c) {
90+
return NO;
91+
}
92+
93+
return YES;
94+
}
95+
96+
}

MangoFixTests/MangoFixTests.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#import "MFSuperMethodReplaceTest.h"
1616
#import "MFAddGlobalVarTest.h"
1717
#import "MFConditionalReplaceTest.h"
18+
#import "MFOperatorTest.h"
1819
#import "MFSequentialStatementTest.h"
1920
#import "MFBranchStatementTest.h"
2021
#import "MFLoopStatementTest.h"
@@ -85,6 +86,12 @@ - (void)testConditionalReplace{
8586
XCTAssert([conditionalReplaceTest testConditionalReplace],@"conditionalReplaceTest");
8687
}
8788

89+
- (void)testOperator{
90+
[self loadMango:@"MFOperatorTest"];
91+
MFOperatorTest *operatorTest = [[MFOperatorTest alloc] init];
92+
XCTAssert([operatorTest testOperator],@"operatorTest");
93+
}
94+
8895

8996
- (void)testSequentialStatement{
9097
[self loadMango:@"MFSequentialStatementTest"];

0 commit comments

Comments
 (0)