@@ -234,14 +234,18 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
234
234
// 解析类中的成员
235
235
// 先解析函数和构造函数
236
236
for (c in ctx.classBody().classMemberDeclaration()) {
237
- c!!
238
- if (c.classMember() != null && (c.classMember().classFunctionDeclaration() != null || c.classMember().abstractClassFunctionDeclaration() != null )) {
237
+ if (c.classMember() != null
238
+ && (c.classMember().classFunctionDeclaration() != null
239
+ || c.classMember().abstractClassFunctionDeclaration() != null
240
+ || c.classMember().nativeClassFunctionDeclaration() != null
241
+ || c.classMember().classConstructorDeclaration() != null )
242
+ ) {
239
243
visit(c)
240
244
}
241
245
}
242
246
// 再解析变量
243
247
for (c in ctx.classBody().classMemberDeclaration()) {
244
- if (c!! .classMember() != null && c.classMember().classFieldDeclaration() != null ) {
248
+ if (c.classMember() != null && c.classMember().classFieldDeclaration() != null ) {
245
249
visit(c)
246
250
}
247
251
}
@@ -261,7 +265,7 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
261
265
}
262
266
}
263
267
if (il != null ){
264
- LogProcessor .error(" Class ${Class .currClass} must either be declared abstract or implement abstract method ${il!! .nameWithNamespace } " )
268
+ LogProcessor .error(" Class ${Class .currClass} must either be declared abstract or implement abstract method ${il!! } " )
265
269
}
266
270
}
267
271
Class .currClass = null
@@ -298,14 +302,18 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
298
302
// 解析类中的成员
299
303
// 先解析函数和构造函数
300
304
for (c in ctx.classBody().classMemberDeclaration()) {
301
- c!!
302
- if (c.classMember() != null && (c.classMember().classFunctionDeclaration() != null || c.classMember().abstractClassFunctionDeclaration() != null )) {
305
+ if (c.classMember() != null
306
+ && (c.classMember().classFunctionDeclaration() != null
307
+ || c.classMember().abstractClassFunctionDeclaration() != null
308
+ || c.classMember().nativeClassFunctionDeclaration() != null
309
+ || c.classMember().classConstructorDeclaration() != null )
310
+ ) {
303
311
visit(c)
304
312
}
305
313
}
306
314
// 再解析变量
307
315
for (c in ctx.classBody().classMemberDeclaration()) {
308
- if (c!! .classMember() != null && c.classMember().classFieldDeclaration() != null ) {
316
+ if (c.classMember() != null && c.classMember().classFieldDeclaration() != null ) {
309
317
visit(c)
310
318
}
311
319
}
@@ -334,8 +342,10 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
334
342
m.accessModifier = AccessModifier .valueOf((ctx.accessModifier()?.text? : " public" ).uppercase(Locale .getDefault()))
335
343
if (m !is ClassConstructor ) {
336
344
Class .currClass!! .addMember(m)
345
+ }else {
346
+ Class .currClass!! .addConstructor(m)
337
347
}
338
- }else if (m is Pair <* ,* >){// Pair<Var, Property>
348
+ }else if (m is Pair <* ,* >){// Pair<out Var<*>?, out Property? >
339
349
val v = m.first as Var <* >?
340
350
val p = m.second as Property ?
341
351
if (v == null || p == null ) return null
@@ -351,13 +361,13 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
351
361
override fun visitClassMember (ctx : mcfppParser.ClassMemberContext ): Any? {
352
362
Project .ctx = ctx
353
363
return if (ctx.nativeClassFunctionDeclaration() != null ) {
354
- visit (ctx.nativeClassFunctionDeclaration())
364
+ visitNativeClassFunctionDeclaration (ctx.nativeClassFunctionDeclaration())
355
365
} else if (ctx.classFunctionDeclaration() != null ) {
356
- visit (ctx.classFunctionDeclaration())
366
+ visitClassFunctionDeclaration (ctx.classFunctionDeclaration())
357
367
} else if (ctx.classFieldDeclaration() != null ) {
358
- visit (ctx.classFieldDeclaration())
368
+ visitClassFieldDeclaration (ctx.classFieldDeclaration())
359
369
} else if (ctx.classConstructorDeclaration() != null ) {
360
- visit (ctx.classConstructorDeclaration())
370
+ visitClassConstructorDeclaration (ctx.classConstructorDeclaration())
361
371
}else {
362
372
return null
363
373
}
@@ -383,7 +393,6 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
383
393
Function (
384
394
ctx.Identifier ().text,
385
395
Class .currClass!! ,
386
- Class .currClass!! is ObjectClass ,
387
396
ctx.functionBody()
388
397
)
389
398
}
@@ -425,7 +434,6 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
425
434
val f = Function (
426
435
ctx.Identifier ().text,
427
436
Class .currClass!! ,
428
- false ,
429
437
null
430
438
)
431
439
f.returnType = if (ctx.functionReturnType()?.type() != null ){
@@ -509,7 +517,7 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
509
517
// 创建构造函数对象,注册函数
510
518
val f = ClassConstructor (Class .currClass!! )
511
519
f.addParamsFromContext(ctx.normalParams())
512
- if (! Class .currClass!! .addConstructor (f)){
520
+ if (Class .currClass!! .hasConstructor (f)){
513
521
LogProcessor .error(" Already defined constructor: constructor(" + ctx.normalParams().text + " ) in class " + Class .currClass)
514
522
}
515
523
return f
@@ -618,7 +626,7 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
618
626
override fun visitFunctionDeclaration (ctx : mcfppParser.FunctionDeclarationContext ): Any? {
619
627
Project .ctx = ctx
620
628
// 创建函数对象
621
- val identifier : String = ctx.Identifier ().text
629
+ val identifier = ctx.Identifier ().text
622
630
val f = if (ctx.functionParams()?.readOnlyParams() != null && ctx.functionParams().readOnlyParams().parameterList().parameter().size != 0 ){
623
631
GenericFunction (identifier, Project .currNamespace, ctx.functionBody())
624
632
}else {
@@ -776,7 +784,6 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
776
784
MCFPPBaseType .Void
777
785
}
778
786
f.ownerType = ownerType
779
- f.isStatic = ctx.STATIC () != null
780
787
f.addParamsFromContext(ctx.functionParams())
781
788
val field = data.field
782
789
// 注册函数
@@ -1043,7 +1050,6 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
1043
1050
Function (
1044
1051
ctx.Identifier ().text,
1045
1052
DataTemplate .currTemplate!! ,
1046
- DataTemplate .currTemplate is ObjectDataTemplate ,
1047
1053
ctx.functionBody()
1048
1054
)
1049
1055
}
0 commit comments