src: remove classes and nodes related to the old syntax
authorJean Privat <jean@pryen.org>
Thu, 18 Sep 2014 18:41:10 +0000 (14:41 -0400)
committerJean Privat <jean@pryen.org>
Thu, 18 Sep 2014 18:41:10 +0000 (14:41 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/compiler/abstract_compiler.nit
src/compiler/separate_compiler.nit
src/frontend/serialization_phase.nit
src/modelize/modelize_property.nit
src/parser/parser_nodes.nit

index ef02aec..5251f34 100644 (file)
@@ -2179,9 +2179,7 @@ redef class AMethPropdef
                        externname = at.arg_as_string(v.compiler.modelbuilder)
                        if externname == null then return false
                else
-                       var nextern = self.n_extern
-                       if nextern == null then return false
-                       externname = nextern.text.substring(1, nextern.text.length-2)
+                       return false
                end
                if location.file != null then
                        var file = location.file.filename
@@ -2216,9 +2214,7 @@ redef class AMethPropdef
                        externname = at.arg_as_string(v.compiler.modelbuilder)
                        if externname == null then return false
                else
-                       var nextern = self.n_extern
-                       if nextern == null then return false
-                       externname = nextern.text.substring(1, nextern.text.length-2)
+                       return false
                end
                if location.file != null then
                        var file = location.file.filename
index 1032c21..84bc443 100644 (file)
@@ -1972,7 +1972,12 @@ redef class MPropDef
        fun const_color: String do return "COLOR_{c_name}"
 end
 
-redef class AExternInitPropdef
+redef class AMethPropdef
        # The semi-global compilation does not support inlining calls to extern news
-       redef fun can_inline do return false
+       redef fun can_inline
+       do
+               var m = mpropdef
+               if m != null and m.mproperty.is_init and m.is_extern then return false
+               return super
+       end
 end
index 6e063ff..7f0427d 100644 (file)
@@ -223,8 +223,7 @@ end
 redef class AAttrPropdef
        private fun name: String
        do
-               if n_id == null then return n_id2.text
-               return n_id.text
+               return n_id2.text
        end
 end
 
index f0c46a5..53af250 100644 (file)
@@ -724,9 +724,9 @@ redef class AMethPropdef
 
                msignature = new MSignature(mparameters, ret_type)
                mpropdef.msignature = msignature
-               mpropdef.is_abstract = self isa ADeferredMethPropdef or self.get_single_annotation("abstract", modelbuilder) != null
-               mpropdef.is_intern = self isa AInternMethPropdef or self.get_single_annotation("intern", modelbuilder) != null
-               mpropdef.is_extern = self isa AExternPropdef or self.n_extern_code_block != null or self.get_single_annotation("extern", modelbuilder) != null
+               mpropdef.is_abstract = self.get_single_annotation("abstract", modelbuilder) != null
+               mpropdef.is_intern = self.get_single_annotation("intern", modelbuilder) != null
+               mpropdef.is_extern = self.n_extern_code_block != null or self.get_single_annotation("extern", modelbuilder) != null
        end
 
        redef fun check_signature(modelbuilder)
@@ -810,11 +810,7 @@ redef class AAttrPropdef
                var mclass = mclassdef.mclass
 
                var name: String
-               if self.n_id != null then
-                       name = self.n_id.text
-               else
-                       name = self.n_id2.text
-               end
+               name = self.n_id2.text
 
                if mclass.kind == interface_kind or mclassdef.mclass.kind == enum_kind then
                        modelbuilder.error(self, "Error: Attempt to define attribute {name} in the interface {mclass}.")
@@ -824,92 +820,84 @@ redef class AAttrPropdef
                        modelbuilder.error(self, "Error: Attempt to define attribute {name} in the extern class {mclass}.")
                end
 
-               var nid = self.n_id
-               if nid != null then
-                       # Old attribute style
-                       modelbuilder.error(nid, "Error: old-style attribute no more supported")
+               # New attribute style
+               var nid2 = self.n_id2
+               var mprop = new MAttribute(mclassdef, "_" + name, private_visibility)
+               var mpropdef = new MAttributeDef(mclassdef, mprop, self.location)
+               self.mpropdef = mpropdef
+               modelbuilder.mpropdef2npropdef[mpropdef] = self
+               set_doc(mpropdef, modelbuilder)
+
+               var readname = name
+               var mreadprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, readname).as(nullable MMethod)
+               if mreadprop == null then
+                       var mvisibility = new_property_visibility(modelbuilder, mclassdef, self.n_visibility)
+                       mreadprop = new MMethod(mclassdef, readname, mvisibility)
+                       if not self.check_redef_keyword(modelbuilder, mclassdef, n_kwredef, false, mreadprop) then return
+                       mreadprop.deprecation = mprop.deprecation
                else
-                       # New attribute style
-                       var nid2 = self.n_id2.as(not null)
-                       var mprop = new MAttribute(mclassdef, "_" + name, private_visibility)
-                       var mpropdef = new MAttributeDef(mclassdef, mprop, self.location)
-                       self.mpropdef = mpropdef
-                       modelbuilder.mpropdef2npropdef[mpropdef] = self
-                       set_doc(mpropdef, modelbuilder)
-
-                       var readname = name
-                       var mreadprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, readname).as(nullable MMethod)
-                       if mreadprop == null then
-                               var mvisibility = new_property_visibility(modelbuilder, mclassdef, self.n_visibility)
-                               mreadprop = new MMethod(mclassdef, readname, mvisibility)
-                               if not self.check_redef_keyword(modelbuilder, mclassdef, n_kwredef, false, mreadprop) then return
-                               mreadprop.deprecation = mprop.deprecation
-                       else
-                               if not self.check_redef_keyword(modelbuilder, mclassdef, n_kwredef, true, mreadprop) then return
-                               check_redef_property_visibility(modelbuilder, self.n_visibility, mreadprop)
-                       end
-                       mclassdef.mprop2npropdef[mreadprop] = self
+                       if not self.check_redef_keyword(modelbuilder, mclassdef, n_kwredef, true, mreadprop) then return
+                       check_redef_property_visibility(modelbuilder, self.n_visibility, mreadprop)
+               end
+               mclassdef.mprop2npropdef[mreadprop] = self
 
-                       var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location)
-                       self.mreadpropdef = mreadpropdef
-                       modelbuilder.mpropdef2npropdef[mreadpropdef] = self
-                       mreadpropdef.mdoc = mpropdef.mdoc
+               var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location)
+               self.mreadpropdef = mreadpropdef
+               modelbuilder.mpropdef2npropdef[mreadpropdef] = self
+               mreadpropdef.mdoc = mpropdef.mdoc
 
-                       var atlazy = self.get_single_annotation("lazy", modelbuilder)
-                       if atlazy != null then
-                               if n_expr == null then
-                                       modelbuilder.error(atlazy, "Error: a lazy attribute needs a value")
-                               end
-                               is_lazy = true
-                               var mlazyprop = new MAttribute(mclassdef, "lazy _" + name, none_visibility)
-                               var mlazypropdef = new MAttributeDef(mclassdef, mlazyprop, self.location)
-                               self.mlazypropdef = mlazypropdef
+               var atlazy = self.get_single_annotation("lazy", modelbuilder)
+               if atlazy != null then
+                       if n_expr == null then
+                               modelbuilder.error(atlazy, "Error: a lazy attribute needs a value")
                        end
+                       is_lazy = true
+                       var mlazyprop = new MAttribute(mclassdef, "lazy _" + name, none_visibility)
+                       var mlazypropdef = new MAttributeDef(mclassdef, mlazyprop, self.location)
+                       self.mlazypropdef = mlazypropdef
+               end
 
-                       var atreadonly = self.get_single_annotation("readonly", modelbuilder)
-                       if atreadonly != null then
-                               if n_expr == null then
-                                       modelbuilder.error(atreadonly, "Error: a readonly attribute needs a value")
-                               end
-                               # No setter, so just leave
-                               return
+               var atreadonly = self.get_single_annotation("readonly", modelbuilder)
+               if atreadonly != null then
+                       if n_expr == null then
+                               modelbuilder.error(atreadonly, "Error: a readonly attribute needs a value")
                        end
+                       # No setter, so just leave
+                       return
+               end
 
-                       var writename = name + "="
-                       var nwritable = self.n_writable
-                       if nwritable != null then modelbuilder.error(nwritable, "Error: old-style setter no more supported")
-                       var atwritable = self.get_single_annotation("writable", modelbuilder)
-                       if atwritable != null then
-                               if not atwritable.n_args.is_empty then
-                                       writename = atwritable.arg_as_id(modelbuilder) or else writename
-                               end
+               var writename = name + "="
+               var atwritable = self.get_single_annotation("writable", modelbuilder)
+               if atwritable != null then
+                       if not atwritable.n_args.is_empty then
+                               writename = atwritable.arg_as_id(modelbuilder) or else writename
                        end
-                       var mwriteprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, writename).as(nullable MMethod)
-                       var nwkwredef: nullable Token = null
-                       if atwritable != null then nwkwredef = atwritable.n_kwredef
-                       if mwriteprop == null then
-                               var mvisibility
-                               if atwritable != null then
-                                       mvisibility = new_property_visibility(modelbuilder, mclassdef, atwritable.n_visibility)
-                               else
-                                       mvisibility = private_visibility
-                               end
-                               mwriteprop = new MMethod(mclassdef, writename, mvisibility)
-                               if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef, false, mwriteprop) then return
-                               mwriteprop.deprecation = mprop.deprecation
+               end
+               var mwriteprop = modelbuilder.try_get_mproperty_by_name(nid2, mclassdef, writename).as(nullable MMethod)
+               var nwkwredef: nullable Token = null
+               if atwritable != null then nwkwredef = atwritable.n_kwredef
+               if mwriteprop == null then
+                       var mvisibility
+                       if atwritable != null then
+                               mvisibility = new_property_visibility(modelbuilder, mclassdef, atwritable.n_visibility)
                        else
-                               if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef or else n_kwredef, true, mwriteprop) then return
-                               if atwritable != null then
-                                       check_redef_property_visibility(modelbuilder, atwritable.n_visibility, mwriteprop)
-                               end
+                               mvisibility = private_visibility
+                       end
+                       mwriteprop = new MMethod(mclassdef, writename, mvisibility)
+                       if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef, false, mwriteprop) then return
+                       mwriteprop.deprecation = mprop.deprecation
+               else
+                       if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef or else n_kwredef, true, mwriteprop) then return
+                       if atwritable != null then
+                               check_redef_property_visibility(modelbuilder, atwritable.n_visibility, mwriteprop)
                        end
-                       mclassdef.mprop2npropdef[mwriteprop] = self
-
-                       var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
-                       self.mwritepropdef = mwritepropdef
-                       modelbuilder.mpropdef2npropdef[mwritepropdef] = self
-                       mwritepropdef.mdoc = mpropdef.mdoc
                end
+               mclassdef.mprop2npropdef[mwriteprop] = self
+
+               var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
+               self.mwritepropdef = mwritepropdef
+               modelbuilder.mpropdef2npropdef[mwritepropdef] = self
+               mwritepropdef.mdoc = mpropdef.mdoc
        end
 
        redef fun build_signature(modelbuilder)
@@ -988,11 +976,7 @@ redef class AAttrPropdef
                var mwritepropdef = self.mwritepropdef
                if mwritepropdef != null then
                        var name: String
-                       if n_id != null then
-                               name = n_id.text.substring_from(1)
-                       else
-                               name = n_id2.text
-                       end
+                       name = n_id2.text
                        var mparameter = new MParameter(name, mtype, false)
                        var msignature = new MSignature([mparameter], null)
                        mwritepropdef.msignature = msignature
index 187cd34..d335917 100644 (file)
@@ -363,18 +363,9 @@ end
 class TKwdo
        super TokenKeyword
 end
-class TKwreadable
-       super TokenKeyword
-end
-class TKwwritable
-       super TokenKeyword
-end
 class TKwvar
        super TokenKeyword
 end
-class TKwintern
-       super TokenKeyword
-end
 class TKwextern
        super TokenKeyword
 end
@@ -835,21 +826,16 @@ class AAttrPropdef
        super APropdef
        var n_kwvar: TKwvar is writable, noinit
 
-       # The identifier for an old-style attribute (null if new-style)
-       var n_id: nullable TAttrid is writable
-
        # The identifier for a new-style attribute (null if old-style)
-       var n_id2: nullable TId is writable
+       var n_id2: TId is writable, noinit
 
        var n_type: nullable AType = null is writable
-       var n_readable: nullable AAble = null is writable
-       var n_writable: nullable AAble = null is writable
 
        # The initial value, if any
        var n_expr: nullable AExpr = null is writable
        redef fun hot_location
        do
-               if n_id != null then return n_id.location else return n_id2.location
+               return n_id2.location
        end
 end
 
@@ -862,7 +848,6 @@ class AMethPropdef
        var n_methid: nullable AMethid = null is writable
        var n_signature: nullable ASignature = null is writable
        var n_block: nullable AExpr = null is writable
-       var n_extern: nullable TString = null is writable
        var n_extern_calls: nullable AExternCalls = null is writable
        var n_extern_code_block: nullable AExternCodeBlock = null is writable
        redef fun hot_location
@@ -879,57 +864,9 @@ class AMethPropdef
        end
 end
 
-# A method marked abstract
-# *deferred* is a old synonynmous of *abstract* that comes from PRM, that comes from Eiffel.
-class ADeferredMethPropdef
-       super AMethPropdef
-end
-
-# A method marked intern
-class AInternMethPropdef
-       super AMethPropdef
-end
-
-# A method of a constructor marked extern
-abstract class AExternPropdef
-       super AMethPropdef
-end
-
-# A method marked extern
-class AExternMethPropdef
-       super AExternPropdef
-end
-
-# A method with a body
-class AConcreteMethPropdef
-       super AMethPropdef
-end
-
-# A constructor
-abstract class AInitPropdef
-       super AMethPropdef
-end
-
-# A constructor with a body
-class AConcreteInitPropdef
-       super AConcreteMethPropdef
-       super AInitPropdef
-end
-
-class AInternNewPropdef
-       super AInternMethPropdef
-       super AInitPropdef
-end
-
-# A constructor marked extern (defined with the `new` keyword)
-class AExternInitPropdef
-       super AExternPropdef
-       super AInitPropdef
-end
-
 # The implicit main method
 class AMainMethPropdef
-       super AConcreteMethPropdef
+       super AMethPropdef
 end
 
 # Declaration of callbacks for extern methods
@@ -994,25 +931,6 @@ class ATypePropdef
        var n_type: AType is writable, noinit
 end
 
-# A `writable` or `readable` modifier
-abstract class AAble
-       super Prod
-       var n_visibility: nullable AVisibility = null is writable
-       var n_kwredef: nullable TKwredef = null is writable
-end
-
-# A `readable` modifier
-class AReadAble
-       super AAble
-       var n_kwreadable: TKwreadable is writable, noinit
-end
-
-# A `writable` modifier
-class AWriteAble
-       super AAble
-       var n_kwwritable: TKwwritable is writable, noinit
-end
-
 # The identifier of a method in a method declaration.
 # There is a specific class because of operator and setters.
 abstract class AMethid
@@ -1846,15 +1764,6 @@ end
 class AKwexternAtid
        super AAtid
 end
-class AKwinternAtid
-       super AAtid
-end
-class AKwreadableAtid
-       super AAtid
-end
-class AKwwritableAtid
-       super AAtid
-end
 class AKwimportAtid
        super AAtid
 end