@@ -234,14 +234,18 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
234234 // 解析类中的成员
235235 // 先解析函数和构造函数
236236 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+ ) {
239243 visit(c)
240244 }
241245 }
242246 // 再解析变量
243247 for (c in ctx.classBody().classMemberDeclaration()) {
244- if (c!! .classMember() != null && c.classMember().classFieldDeclaration() != null ) {
248+ if (c.classMember() != null && c.classMember().classFieldDeclaration() != null ) {
245249 visit(c)
246250 }
247251 }
@@ -261,7 +265,7 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
261265 }
262266 }
263267 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!! } " )
265269 }
266270 }
267271 Class .currClass = null
@@ -298,14 +302,18 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
298302 // 解析类中的成员
299303 // 先解析函数和构造函数
300304 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+ ) {
303311 visit(c)
304312 }
305313 }
306314 // 再解析变量
307315 for (c in ctx.classBody().classMemberDeclaration()) {
308- if (c!! .classMember() != null && c.classMember().classFieldDeclaration() != null ) {
316+ if (c.classMember() != null && c.classMember().classFieldDeclaration() != null ) {
309317 visit(c)
310318 }
311319 }
@@ -334,8 +342,10 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
334342 m.accessModifier = AccessModifier .valueOf((ctx.accessModifier()?.text? : " public" ).uppercase(Locale .getDefault()))
335343 if (m !is ClassConstructor ) {
336344 Class .currClass!! .addMember(m)
345+ }else {
346+ Class .currClass!! .addConstructor(m)
337347 }
338- }else if (m is Pair <* ,* >){// Pair<Var, Property>
348+ }else if (m is Pair <* ,* >){// Pair<out Var<*>?, out Property? >
339349 val v = m.first as Var <* >?
340350 val p = m.second as Property ?
341351 if (v == null || p == null ) return null
@@ -351,13 +361,13 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
351361 override fun visitClassMember (ctx : mcfppParser.ClassMemberContext ): Any? {
352362 Project .ctx = ctx
353363 return if (ctx.nativeClassFunctionDeclaration() != null ) {
354- visit (ctx.nativeClassFunctionDeclaration())
364+ visitNativeClassFunctionDeclaration (ctx.nativeClassFunctionDeclaration())
355365 } else if (ctx.classFunctionDeclaration() != null ) {
356- visit (ctx.classFunctionDeclaration())
366+ visitClassFunctionDeclaration (ctx.classFunctionDeclaration())
357367 } else if (ctx.classFieldDeclaration() != null ) {
358- visit (ctx.classFieldDeclaration())
368+ visitClassFieldDeclaration (ctx.classFieldDeclaration())
359369 } else if (ctx.classConstructorDeclaration() != null ) {
360- visit (ctx.classConstructorDeclaration())
370+ visitClassConstructorDeclaration (ctx.classConstructorDeclaration())
361371 }else {
362372 return null
363373 }
@@ -383,7 +393,6 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
383393 Function (
384394 ctx.Identifier ().text,
385395 Class .currClass!! ,
386- Class .currClass!! is ObjectClass ,
387396 ctx.functionBody()
388397 )
389398 }
@@ -425,7 +434,6 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
425434 val f = Function (
426435 ctx.Identifier ().text,
427436 Class .currClass!! ,
428- false ,
429437 null
430438 )
431439 f.returnType = if (ctx.functionReturnType()?.type() != null ){
@@ -509,7 +517,7 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
509517 // 创建构造函数对象,注册函数
510518 val f = ClassConstructor (Class .currClass!! )
511519 f.addParamsFromContext(ctx.normalParams())
512- if (! Class .currClass!! .addConstructor (f)){
520+ if (Class .currClass!! .hasConstructor (f)){
513521 LogProcessor .error(" Already defined constructor: constructor(" + ctx.normalParams().text + " ) in class " + Class .currClass)
514522 }
515523 return f
@@ -618,7 +626,7 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
618626 override fun visitFunctionDeclaration (ctx : mcfppParser.FunctionDeclarationContext ): Any? {
619627 Project .ctx = ctx
620628 // 创建函数对象
621- val identifier : String = ctx.Identifier ().text
629+ val identifier = ctx.Identifier ().text
622630 val f = if (ctx.functionParams()?.readOnlyParams() != null && ctx.functionParams().readOnlyParams().parameterList().parameter().size != 0 ){
623631 GenericFunction (identifier, Project .currNamespace, ctx.functionBody())
624632 }else {
@@ -776,7 +784,6 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
776784 MCFPPBaseType .Void
777785 }
778786 f.ownerType = ownerType
779- f.isStatic = ctx.STATIC () != null
780787 f.addParamsFromContext(ctx.functionParams())
781788 val field = data.field
782789 // 注册函数
@@ -1043,7 +1050,6 @@ open class MCFPPFieldVisitor : mcfppParserBaseVisitor<Any?>() {
10431050 Function (
10441051 ctx.Identifier ().text,
10451052 DataTemplate .currTemplate!! ,
1046- DataTemplate .currTemplate is ObjectDataTemplate ,
10471053 ctx.functionBody()
10481054 )
10491055 }
0 commit comments