src: intro `parse_superclass`
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 21 Jul 2014 00:10:47 +0000 (20:10 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Tue, 22 Jul 2014 12:47:22 +0000 (08:47 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

src/parser_util.nit

index f23ccda..54ccab2 100644 (file)
@@ -83,6 +83,20 @@ redef class ToolContext
                return nexpr
        end
 
+       # Parse a super class declaration
+       # Fatal error if the `string` is not a syntactically correct super class declaration
+       fun parse_superclass(string: String): ASuperclass
+       do
+               var mod_string = "class Dummy\nsuper {string}\nend"
+               var nclassdef = parse_classdef(mod_string).as(AStdClassdef)
+               var nsuperclasses = nclassdef.n_superclasses
+               if nsuperclasses.length != 1 then
+                       self.fatal_error(null, "Fatal Error: not a super class declaration")
+                       abort
+               end
+               return nsuperclasses.first
+       end
+
        # Try to parse the `string` as something
        #
        # Returns the first possible syntacticaly correct type among: