--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_model_json is test_suite
+
+import test_suite
+import model_json
+import frontend
+
+class TestModelSerialization
+ super TestSuite
+
+ var suite_path: String = "NIT_TESTING_PATH".environ
+ var lib_path: String = "{suite_path.dirname}/../../tests/test_prog"
+
+ private var model: Model do
+ var toolcontext = new ToolContext
+ var model = new Model
+ var mbuilder = new ModelBuilder(model, toolcontext)
+ var mmodules = mbuilder.parse_full([lib_path])
+ if mmodules.is_empty then return model
+ mbuilder.run_phases
+ toolcontext.run_global_phases(mmodules)
+ return model
+ end
+
+ fun test_refs_to_full_json do
+ var mentities = new Array[MEntity]
+ mentities.add model.mpackages.first
+ mentities.add model.mmodules.first
+ mentities.add model.mclasses.first
+ for mentity in mentities do
+ print ((new MEntityRef(mentity)).to_pretty_full_json)
+ end
+ end
+
+ fun test_packages_to_full_json do
+ for mentity in model.mpackages do
+ print mentity.to_pretty_full_json
+ end
+ end
+
+ fun test_groups_to_full_json do
+ for mpackage in model.mpackages do
+ for mentity in mpackage.mgroups do
+ print mentity.to_pretty_full_json
+ end
+ end
+ end
+
+ fun test_modules_to_full_json do
+ for mentity in model.mmodules do
+ print mentity.to_pretty_full_json
+ end
+ end
+
+ fun test_classes_to_full_json do
+ for mentity in model.mclasses do
+ print mentity.to_pretty_full_json
+ end
+ end
+
+ fun test_classdefs_to_full_json do
+ for mclass in model.mclasses do
+ for mentity in mclass.mclassdefs do
+ print mentity.to_pretty_full_json
+ end
+ end
+ end
+
+ fun test_props_to_full_json do
+ for mentity in model.mproperties do
+ print mentity.to_pretty_full_json
+ end
+ end
+
+ fun test_propdefs_to_full_json do
+ for mprop in model.mproperties do
+ for mentity in mprop.mpropdefs do
+ print mentity.to_pretty_full_json
+ end
+ end
+ end
+end
+
+redef class Location
+ serialize
+
+ # Avoid diff on location absolute path
+ redef fun core_serialize_to(v) do
+ v.serialize_attribute("column_end", column_end)
+ v.serialize_attribute("column_start", column_start)
+ v.serialize_attribute("line_end", line_end)
+ v.serialize_attribute("line_start", line_start)
+ var file = self.file
+ if file != null then
+ v.serialize_attribute("file", "test_location")
+ end
+ end
+end
--- /dev/null
+{
+ "name": "Object",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Object",
+ "mdoc": {
+ "content": "Root of everything.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 21,
+ "line_start": 20,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "interface"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 30,
+ "line_start": 20,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mclass": {
+ "full_name": "test_prog::Object"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Object$OTHER"
+ }, {
+ "full_name": "test_prog$Object$=="
+ }, {
+ "full_name": "test_prog$Object$!="
+ }, {
+ "full_name": "test_prog$Object$init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro": {
+ "full_name": "test_prog$Object"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Object$OTHER"
+ }, {
+ "full_name": "test_prog$Object$=="
+ }, {
+ "full_name": "test_prog$Object$!="
+ }, {
+ "full_name": "test_prog$Object$init"
+ }],
+ "redef_mpropdefs": []
+}
+{
+ "name": "Int",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Int",
+ "mdoc": {
+ "content": "Some services about Integers.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 33,
+ "line_start": 32,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 41,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mclass": {
+ "full_name": "test_prog::Int"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Int$unary -"
+ }, {
+ "full_name": "test_prog$Int$+"
+ }, {
+ "full_name": "test_prog$Int$-"
+ }, {
+ "full_name": "test_prog$Int$*"
+ }, {
+ "full_name": "test_prog$Int$/"
+ }, {
+ "full_name": "test_prog$Int$>"
+ }, {
+ "full_name": "test_prog$Int$to_f"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Int::unary -"
+ }, {
+ "full_name": "test_prog::Int::+"
+ }, {
+ "full_name": "test_prog::Int::-"
+ }, {
+ "full_name": "test_prog::Int::*"
+ }, {
+ "full_name": "test_prog::Int::/"
+ }, {
+ "full_name": "test_prog::Int::>"
+ }, {
+ "full_name": "test_prog::Int::to_f"
+ }],
+ "intro": {
+ "full_name": "test_prog$Int"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Int$unary -"
+ }, {
+ "full_name": "test_prog$Int$+"
+ }, {
+ "full_name": "test_prog$Int$-"
+ }, {
+ "full_name": "test_prog$Int$*"
+ }, {
+ "full_name": "test_prog$Int$/"
+ }, {
+ "full_name": "test_prog$Int$>"
+ }, {
+ "full_name": "test_prog$Int$to_f"
+ }],
+ "redef_mpropdefs": []
+}
+{
+ "name": "Float",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Float",
+ "mdoc": {
+ "content": "Some services about Floats.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 44,
+ "line_start": 43,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 50,
+ "line_start": 43,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mclass": {
+ "full_name": "test_prog::Float"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Float$+"
+ }, {
+ "full_name": "test_prog$Float$-"
+ }, {
+ "full_name": "test_prog$Float$*"
+ }, {
+ "full_name": "test_prog$Float$/"
+ }, {
+ "full_name": "test_prog$Float$>"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Float::+"
+ }, {
+ "full_name": "test_prog::Float::-"
+ }, {
+ "full_name": "test_prog::Float::*"
+ }, {
+ "full_name": "test_prog::Float::/"
+ }, {
+ "full_name": "test_prog::Float::>"
+ }],
+ "intro": {
+ "full_name": "test_prog$Float"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Float$+"
+ }, {
+ "full_name": "test_prog$Float$-"
+ }, {
+ "full_name": "test_prog$Float$*"
+ }, {
+ "full_name": "test_prog$Float$/"
+ }, {
+ "full_name": "test_prog$Float$>"
+ }],
+ "redef_mpropdefs": []
+}
+{
+ "name": "Bool",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Bool",
+ "mdoc": {
+ "content": "Booleans, `true` or `false`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 53,
+ "line_start": 52,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 14,
+ "column_start": 1,
+ "line_end": 53,
+ "line_start": 52,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mclass": {
+ "full_name": "test_prog::Bool"
+ },
+ "mpropdefs": [],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Bool"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": []
+}
+{
+ "name": "String",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$String",
+ "mdoc": {
+ "content": "Strings (there is no chars...).",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 56,
+ "line_start": 55,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 16,
+ "column_start": 1,
+ "line_end": 56,
+ "line_start": 55,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mclass": {
+ "full_name": "test_prog::String"
+ },
+ "mpropdefs": [],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$String"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": []
+}
+{
+ "name": "List",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$List",
+ "mdoc": {
+ "content": "List of things.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 59,
+ "line_start": 58,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 17,
+ "column_start": 1,
+ "line_end": 59,
+ "line_start": 58,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [{
+ "name": "E",
+ "rank": 0,
+ "mtype": {
+ "full_name": "nullable test_prog::Object"
+ }
+ }],
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mclass": {
+ "full_name": "test_prog::List"
+ },
+ "mpropdefs": [],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$List"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": []
+}
+{
+ "name": "Career",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Career",
+ "mdoc": {
+ "content": "A `Career` gives a characteristic bonus or malus to the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 30,
+ "line_start": 29,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 36,
+ "line_start": 29,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$_strength_bonus"
+ }, {
+ "full_name": "test_prog$Career$strength_bonus"
+ }, {
+ "full_name": "test_prog$Career$strength_bonus="
+ }, {
+ "full_name": "test_prog$Career$_endurance_bonus"
+ }, {
+ "full_name": "test_prog$Career$endurance_bonus"
+ }, {
+ "full_name": "test_prog$Career$endurance_bonus="
+ }, {
+ "full_name": "test_prog$Career$_intelligence_bonus"
+ }, {
+ "full_name": "test_prog$Career$intelligence_bonus"
+ }, {
+ "full_name": "test_prog$Career$intelligence_bonus="
+ }, {
+ "full_name": "test_prog$Career$Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::careers::Career::_strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus="
+ }],
+ "intro": {
+ "full_name": "test_prog$Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Career$_strength_bonus"
+ }, {
+ "full_name": "test_prog$Career$strength_bonus"
+ }, {
+ "full_name": "test_prog$Career$strength_bonus="
+ }, {
+ "full_name": "test_prog$Career$_endurance_bonus"
+ }, {
+ "full_name": "test_prog$Career$endurance_bonus"
+ }, {
+ "full_name": "test_prog$Career$endurance_bonus="
+ }, {
+ "full_name": "test_prog$Career$_intelligence_bonus"
+ }, {
+ "full_name": "test_prog$Career$intelligence_bonus"
+ }, {
+ "full_name": "test_prog$Career$intelligence_bonus="
+ }],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Career$Object::init"
+ }]
+}
+{
+ "name": "Warrior",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Warrior",
+ "mdoc": {
+ "content": "Warriors are good for fighting.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 47,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mclass": {
+ "full_name": "test_prog::Warrior"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Warrior$Object::init"
+ }],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Warrior"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Warrior$Object::init"
+ }]
+}
+{
+ "name": "Magician",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Magician",
+ "mdoc": {
+ "content": "Magicians know magic and how to use it.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 50,
+ "line_start": 49,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 58,
+ "line_start": 49,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mclass": {
+ "full_name": "test_prog::Magician"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Magician$Object::init"
+ }],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Magician"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Magician$Object::init"
+ }]
+}
+{
+ "name": "Alcoholic",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Alcoholic",
+ "mdoc": {
+ "content": "Alcoholics are good to nothing escept taking punches.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 61,
+ "line_start": 60,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 69,
+ "line_start": 60,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mclass": {
+ "full_name": "test_prog::Alcoholic"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Alcoholic$Object::init"
+ }],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Alcoholic"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Alcoholic$Object::init"
+ }]
+}
+{
+ "name": "Race",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Race",
+ "mdoc": {
+ "content": "Race determines basic characteristics and what the character will be able to do in life.\n\nThese are base characteristics, they cannot be changed\nbut you can add new ones if needed using refinement.\nObjects and spells cannot change those characteristics.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 33,
+ "line_start": 28,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 45,
+ "line_start": 28,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$_base_strength"
+ }, {
+ "full_name": "test_prog$Race$base_strength"
+ }, {
+ "full_name": "test_prog$Race$base_strength="
+ }, {
+ "full_name": "test_prog$Race$_base_endurance"
+ }, {
+ "full_name": "test_prog$Race$base_endurance"
+ }, {
+ "full_name": "test_prog$Race$base_endurance="
+ }, {
+ "full_name": "test_prog$Race$_base_intelligence"
+ }, {
+ "full_name": "test_prog$Race$base_intelligence"
+ }, {
+ "full_name": "test_prog$Race$base_intelligence="
+ }, {
+ "full_name": "test_prog$Race$Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::races::Race::_base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength="
+ }, {
+ "full_name": "test_prog::races::Race::_base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance="
+ }, {
+ "full_name": "test_prog::races::Race::_base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence="
+ }],
+ "intro": {
+ "full_name": "test_prog$Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Race$_base_strength"
+ }, {
+ "full_name": "test_prog$Race$base_strength"
+ }, {
+ "full_name": "test_prog$Race$base_strength="
+ }, {
+ "full_name": "test_prog$Race$_base_endurance"
+ }, {
+ "full_name": "test_prog$Race$base_endurance"
+ }, {
+ "full_name": "test_prog$Race$base_endurance="
+ }, {
+ "full_name": "test_prog$Race$_base_intelligence"
+ }, {
+ "full_name": "test_prog$Race$base_intelligence"
+ }, {
+ "full_name": "test_prog$Race$base_intelligence="
+ }],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Race$Object::init"
+ }]
+}
+{
+ "name": "Human",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Human",
+ "mdoc": {
+ "content": "Humans are able to do everithing.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 48,
+ "line_start": 47,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 56,
+ "line_start": 47,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mclass": {
+ "full_name": "test_prog::Human"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Human$Object::init"
+ }],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Human"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Human$Object::init"
+ }]
+}
+{
+ "name": "Dwarf",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Dwarf",
+ "mdoc": {
+ "content": "Dwarves make strong warriors.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 59,
+ "line_start": 58,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 67,
+ "line_start": 58,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mclass": {
+ "full_name": "test_prog::Dwarf"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Dwarf$Object::init"
+ }],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Dwarf"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Dwarf$Object::init"
+ }]
+}
+{
+ "name": "Dwarf",
+ "class_name": "MClassDef",
+ "full_name": "test_prog::combat$Dwarf",
+ "mdoc": {
+ "content": "Dwarves can be used as weapons.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 62,
+ "line_start": 61,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["redef", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 67,
+ "line_start": 61,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mclass": {
+ "full_name": "test_prog::Dwarf"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog::combat$Dwarf$Weapon::dps"
+ }],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Dwarf"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog::combat$Dwarf$Weapon::dps"
+ }]
+}
+{
+ "name": "Elf",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Elf",
+ "mdoc": {
+ "content": "Elves make good magicians.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 70,
+ "line_start": 69,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 78,
+ "line_start": 69,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mclass": {
+ "full_name": "test_prog::Elf"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Elf$Object::init"
+ }],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Elf"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Elf$Object::init"
+ }]
+}
+{
+ "name": "Character",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Character",
+ "mdoc": {
+ "content": "Characters can be played by both the human or the machine.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 22,
+ "line_start": 21,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 68,
+ "line_start": 21,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$_race"
+ }, {
+ "full_name": "test_prog$Character$race"
+ }, {
+ "full_name": "test_prog$Character$race="
+ }, {
+ "full_name": "test_prog$Character$_career"
+ }, {
+ "full_name": "test_prog$Character$career"
+ }, {
+ "full_name": "test_prog$Character$career="
+ }, {
+ "full_name": "test_prog$Character$quit"
+ }, {
+ "full_name": "test_prog$Character$_name"
+ }, {
+ "full_name": "test_prog$Character$name"
+ }, {
+ "full_name": "test_prog$Character$name="
+ }, {
+ "full_name": "test_prog$Character$_age"
+ }, {
+ "full_name": "test_prog$Character$age"
+ }, {
+ "full_name": "test_prog$Character$age="
+ }, {
+ "full_name": "test_prog$Character$_sex"
+ }, {
+ "full_name": "test_prog$Character$sex"
+ }, {
+ "full_name": "test_prog$Character$sex="
+ }, {
+ "full_name": "test_prog$Character$total_strengh"
+ }, {
+ "full_name": "test_prog$Character$total_endurance"
+ }, {
+ "full_name": "test_prog$Character$total_intelligence"
+ }, {
+ "full_name": "test_prog$Character$max_health"
+ }, {
+ "full_name": "test_prog$Character$_health"
+ }, {
+ "full_name": "test_prog$Character$health"
+ }, {
+ "full_name": "test_prog$Character$health="
+ }, {
+ "full_name": "test_prog$Character$Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::character::Character::_race"
+ }, {
+ "full_name": "test_prog::Character::race"
+ }, {
+ "full_name": "test_prog::Character::race="
+ }, {
+ "full_name": "test_prog::character::Character::_career"
+ }, {
+ "full_name": "test_prog::Character::career"
+ }, {
+ "full_name": "test_prog::Character::career="
+ }, {
+ "full_name": "test_prog::Character::quit"
+ }, {
+ "full_name": "test_prog::character::Character::_name"
+ }, {
+ "full_name": "test_prog::Character::name"
+ }, {
+ "full_name": "test_prog::Character::name="
+ }, {
+ "full_name": "test_prog::character::Character::_age"
+ }, {
+ "full_name": "test_prog::Character::age"
+ }, {
+ "full_name": "test_prog::Character::age="
+ }, {
+ "full_name": "test_prog::character::Character::_sex"
+ }, {
+ "full_name": "test_prog::Character::sex"
+ }, {
+ "full_name": "test_prog::Character::sex="
+ }, {
+ "full_name": "test_prog::Character::total_strengh"
+ }, {
+ "full_name": "test_prog::Character::total_endurance"
+ }, {
+ "full_name": "test_prog::Character::total_intelligence"
+ }, {
+ "full_name": "test_prog::Character::max_health"
+ }, {
+ "full_name": "test_prog::character::Character::_health"
+ }, {
+ "full_name": "test_prog::Character::health"
+ }, {
+ "full_name": "test_prog::Character::health="
+ }],
+ "intro": {
+ "full_name": "test_prog$Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Character$_race"
+ }, {
+ "full_name": "test_prog$Character$race"
+ }, {
+ "full_name": "test_prog$Character$race="
+ }, {
+ "full_name": "test_prog$Character$_career"
+ }, {
+ "full_name": "test_prog$Character$career"
+ }, {
+ "full_name": "test_prog$Character$career="
+ }, {
+ "full_name": "test_prog$Character$quit"
+ }, {
+ "full_name": "test_prog$Character$_name"
+ }, {
+ "full_name": "test_prog$Character$name"
+ }, {
+ "full_name": "test_prog$Character$name="
+ }, {
+ "full_name": "test_prog$Character$_age"
+ }, {
+ "full_name": "test_prog$Character$age"
+ }, {
+ "full_name": "test_prog$Character$age="
+ }, {
+ "full_name": "test_prog$Character$_sex"
+ }, {
+ "full_name": "test_prog$Character$sex"
+ }, {
+ "full_name": "test_prog$Character$sex="
+ }, {
+ "full_name": "test_prog$Character$total_strengh"
+ }, {
+ "full_name": "test_prog$Character$total_endurance"
+ }, {
+ "full_name": "test_prog$Character$total_intelligence"
+ }, {
+ "full_name": "test_prog$Character$max_health"
+ }, {
+ "full_name": "test_prog$Character$_health"
+ }, {
+ "full_name": "test_prog$Character$health"
+ }, {
+ "full_name": "test_prog$Character$health="
+ }],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog$Character$Object::init"
+ }]
+}
+{
+ "name": "Character",
+ "class_name": "MClassDef",
+ "full_name": "test_prog::combat$Character",
+ "mdoc": {
+ "content": "Characters are now `Comabatable`",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 54,
+ "line_start": 53,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["redef", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 59,
+ "line_start": 53,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog::combat$Character$Combatable::hit_points"
+ }],
+ "intro_mproperties": [],
+ "intro": {
+ "full_name": "test_prog$Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [],
+ "redef_mpropdefs": [{
+ "full_name": "test_prog::combat$Character$Combatable::hit_points"
+ }]
+}
+{
+ "name": "Weapon",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Weapon",
+ "mdoc": {
+ "content": "Something that can be used to attack someone and inflict damage.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 21,
+ "line_start": 20,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "interface"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 24,
+ "line_start": 20,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mclass": {
+ "full_name": "test_prog::Weapon"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Weapon$dps"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Weapon::dps"
+ }],
+ "intro": {
+ "full_name": "test_prog$Weapon"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Weapon$dps"
+ }],
+ "redef_mpropdefs": []
+}
+{
+ "name": "Combatable",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Combatable",
+ "mdoc": {
+ "content": "Something that can be combatted, it can `attack` and `defend`.\n\nWorld items can also be `Combatable`.\n`defend` method is then used to determines how the object react to an attack\nSome magical items can even `attack`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 31,
+ "line_start": 26,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "interface"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 51,
+ "line_start": 26,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mclass": {
+ "full_name": "test_prog::Combatable"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Combatable$hit_points"
+ }, {
+ "full_name": "test_prog$Combatable$attack"
+ }, {
+ "full_name": "test_prog$Combatable$direct_attack"
+ }, {
+ "full_name": "test_prog$Combatable$defend"
+ }, {
+ "full_name": "test_prog$Combatable$is_dead"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Combatable::hit_points"
+ }, {
+ "full_name": "test_prog::Combatable::attack"
+ }, {
+ "full_name": "test_prog::Combatable::direct_attack"
+ }, {
+ "full_name": "test_prog::Combatable::defend"
+ }, {
+ "full_name": "test_prog::Combatable::is_dead"
+ }],
+ "intro": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Combatable$hit_points"
+ }, {
+ "full_name": "test_prog$Combatable$attack"
+ }, {
+ "full_name": "test_prog$Combatable$direct_attack"
+ }, {
+ "full_name": "test_prog$Combatable$defend"
+ }, {
+ "full_name": "test_prog$Combatable$is_dead"
+ }],
+ "redef_mpropdefs": []
+}
+{
+ "name": "Game",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Game",
+ "mdoc": {
+ "content": "This is the interface you have to implement to use ure gaming platform.\n\nsee http://our.platform.com",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 23,
+ "line_start": 20,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "interface"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 45,
+ "line_start": 20,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::game"
+ },
+ "mclass": {
+ "full_name": "test_prog::Game"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Game$player_characters"
+ }, {
+ "full_name": "test_prog$Game$computer_characters"
+ }, {
+ "full_name": "test_prog$Game$start_game"
+ }, {
+ "full_name": "test_prog$Game$pause_game"
+ }, {
+ "full_name": "test_prog$Game$stop_game"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Game::player_characters"
+ }, {
+ "full_name": "test_prog::Game::computer_characters"
+ }, {
+ "full_name": "test_prog::Game::start_game"
+ }, {
+ "full_name": "test_prog::Game::pause_game"
+ }, {
+ "full_name": "test_prog::Game::stop_game"
+ }],
+ "intro": {
+ "full_name": "test_prog$Game"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Game$player_characters"
+ }, {
+ "full_name": "test_prog$Game$computer_characters"
+ }, {
+ "full_name": "test_prog$Game$start_game"
+ }, {
+ "full_name": "test_prog$Game$pause_game"
+ }, {
+ "full_name": "test_prog$Game$stop_game"
+ }],
+ "redef_mpropdefs": []
+}
+{
+ "name": "Starter",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Starter",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 23,
+ "line_start": 21,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::test_prog"
+ },
+ "mclass": {
+ "full_name": "test_prog::Starter"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Starter$start"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Starter::start"
+ }],
+ "intro": {
+ "full_name": "test_prog$Starter"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Starter$start"
+ }],
+ "redef_mpropdefs": []
+}
+{
+ "name": "Sys",
+ "class_name": "MClassDef",
+ "full_name": "test_prog$Sys",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 13,
+ "column_start": 1,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mparameters": [],
+ "mmodule": {
+ "full_name": "test_prog::test_prog"
+ },
+ "mclass": {
+ "full_name": "test_prog::Sys"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Sys$main"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Sys::main"
+ }],
+ "intro": {
+ "full_name": "test_prog$Sys"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "intro_mpropdefs": [{
+ "full_name": "test_prog$Sys$main"
+ }],
+ "redef_mpropdefs": []
+}
--- /dev/null
+{
+ "name": "Object",
+ "class_name": "MClass",
+ "full_name": "test_prog::Object",
+ "mdoc": {
+ "content": "Root of everything.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 21,
+ "line_start": 20,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "interface"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 30,
+ "line_start": 20,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Object"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Object"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "redef_mproperties": [],
+ "parents": []
+}
+{
+ "name": "Int",
+ "class_name": "MClass",
+ "full_name": "test_prog::Int",
+ "mdoc": {
+ "content": "Some services about Integers.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 33,
+ "line_start": 32,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 41,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Int"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Int"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Int::unary -"
+ }, {
+ "full_name": "test_prog::Int::+"
+ }, {
+ "full_name": "test_prog::Int::-"
+ }, {
+ "full_name": "test_prog::Int::*"
+ }, {
+ "full_name": "test_prog::Int::/"
+ }, {
+ "full_name": "test_prog::Int::>"
+ }, {
+ "full_name": "test_prog::Int::to_f"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Int::unary -"
+ }, {
+ "full_name": "test_prog::Int::+"
+ }, {
+ "full_name": "test_prog::Int::-"
+ }, {
+ "full_name": "test_prog::Int::*"
+ }, {
+ "full_name": "test_prog::Int::/"
+ }, {
+ "full_name": "test_prog::Int::>"
+ }, {
+ "full_name": "test_prog::Int::to_f"
+ }],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Float",
+ "class_name": "MClass",
+ "full_name": "test_prog::Float",
+ "mdoc": {
+ "content": "Some services about Floats.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 44,
+ "line_start": 43,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 50,
+ "line_start": 43,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Float"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Float"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Float::+"
+ }, {
+ "full_name": "test_prog::Float::-"
+ }, {
+ "full_name": "test_prog::Float::*"
+ }, {
+ "full_name": "test_prog::Float::/"
+ }, {
+ "full_name": "test_prog::Float::>"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Float::+"
+ }, {
+ "full_name": "test_prog::Float::-"
+ }, {
+ "full_name": "test_prog::Float::*"
+ }, {
+ "full_name": "test_prog::Float::/"
+ }, {
+ "full_name": "test_prog::Float::>"
+ }],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Bool",
+ "class_name": "MClass",
+ "full_name": "test_prog::Bool",
+ "mdoc": {
+ "content": "Booleans, `true` or `false`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 53,
+ "line_start": 52,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 14,
+ "column_start": 1,
+ "line_end": 53,
+ "line_start": 52,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Bool"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Bool"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "String",
+ "class_name": "MClass",
+ "full_name": "test_prog::String",
+ "mdoc": {
+ "content": "Strings (there is no chars...).",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 56,
+ "line_start": 55,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 16,
+ "column_start": 1,
+ "line_end": 56,
+ "line_start": 55,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$String"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$String"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "List",
+ "class_name": "MClass",
+ "full_name": "test_prog::List",
+ "mdoc": {
+ "content": "List of things.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 59,
+ "line_start": 58,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 17,
+ "column_start": 1,
+ "line_end": 59,
+ "line_start": 58,
+ "file": "test_location"
+ },
+ "mparameters": [{
+ "name": "E",
+ "rank": 0,
+ "mtype": {
+ "full_name": "nullable test_prog::Object"
+ }
+ }],
+ "intro": {
+ "full_name": "test_prog$List"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$List"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Career",
+ "class_name": "MClass",
+ "full_name": "test_prog::Career",
+ "mdoc": {
+ "content": "A `Career` gives a characteristic bonus or malus to the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 30,
+ "line_start": 29,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 36,
+ "line_start": 29,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Career"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Career"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::careers::Career::_strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::careers::Career::_strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus="
+ }],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Warrior",
+ "class_name": "MClass",
+ "full_name": "test_prog::Warrior",
+ "mdoc": {
+ "content": "Warriors are good for fighting.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 47,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Warrior"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Warrior"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::careers::Career::_strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus="
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Career"
+ }]
+}
+{
+ "name": "Magician",
+ "class_name": "MClass",
+ "full_name": "test_prog::Magician",
+ "mdoc": {
+ "content": "Magicians know magic and how to use it.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 50,
+ "line_start": 49,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 58,
+ "line_start": 49,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Magician"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Magician"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::careers::Career::_strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus="
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Career"
+ }]
+}
+{
+ "name": "Alcoholic",
+ "class_name": "MClass",
+ "full_name": "test_prog::Alcoholic",
+ "mdoc": {
+ "content": "Alcoholics are good to nothing escept taking punches.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 61,
+ "line_start": 60,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 69,
+ "line_start": 60,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Alcoholic"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Alcoholic"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::careers::Career::_strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus"
+ }, {
+ "full_name": "test_prog::Career::strength_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus"
+ }, {
+ "full_name": "test_prog::Career::endurance_bonus="
+ }, {
+ "full_name": "test_prog::careers::Career::_intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus"
+ }, {
+ "full_name": "test_prog::Career::intelligence_bonus="
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Career"
+ }]
+}
+{
+ "name": "Race",
+ "class_name": "MClass",
+ "full_name": "test_prog::Race",
+ "mdoc": {
+ "content": "Race determines basic characteristics and what the character will be able to do in life.\n\nThese are base characteristics, they cannot be changed\nbut you can add new ones if needed using refinement.\nObjects and spells cannot change those characteristics.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 33,
+ "line_start": 28,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 45,
+ "line_start": 28,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Race"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Race"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::races::Race::_base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength="
+ }, {
+ "full_name": "test_prog::races::Race::_base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance="
+ }, {
+ "full_name": "test_prog::races::Race::_base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::races::Race::_base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength="
+ }, {
+ "full_name": "test_prog::races::Race::_base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance="
+ }, {
+ "full_name": "test_prog::races::Race::_base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence="
+ }],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Human",
+ "class_name": "MClass",
+ "full_name": "test_prog::Human",
+ "mdoc": {
+ "content": "Humans are able to do everithing.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 48,
+ "line_start": 47,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 56,
+ "line_start": 47,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Human"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Human"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::races::Race::_base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength="
+ }, {
+ "full_name": "test_prog::races::Race::_base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance="
+ }, {
+ "full_name": "test_prog::races::Race::_base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence="
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Race"
+ }]
+}
+{
+ "name": "Dwarf",
+ "class_name": "MClass",
+ "full_name": "test_prog::Dwarf",
+ "mdoc": {
+ "content": "Dwarves make strong warriors.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 59,
+ "line_start": 58,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 67,
+ "line_start": 58,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Dwarf"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Dwarf"
+ }, {
+ "full_name": "test_prog::combat$Dwarf"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::Weapon::dps"
+ }, {
+ "full_name": "test_prog::races::Race::_base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength="
+ }, {
+ "full_name": "test_prog::races::Race::_base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance="
+ }, {
+ "full_name": "test_prog::races::Race::_base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence="
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::Weapon::dps"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Race"
+ }, {
+ "full_name": "test_prog::Weapon"
+ }]
+}
+{
+ "name": "Elf",
+ "class_name": "MClass",
+ "full_name": "test_prog::Elf",
+ "mdoc": {
+ "content": "Elves make good magicians.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 70,
+ "line_start": 69,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 78,
+ "line_start": 69,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Elf"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Elf"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::races::Race::_base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength"
+ }, {
+ "full_name": "test_prog::Race::base_strength="
+ }, {
+ "full_name": "test_prog::races::Race::_base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance"
+ }, {
+ "full_name": "test_prog::Race::base_endurance="
+ }, {
+ "full_name": "test_prog::races::Race::_base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence"
+ }, {
+ "full_name": "test_prog::Race::base_intelligence="
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }],
+ "intro_mproperties": [],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Race"
+ }]
+}
+{
+ "name": "Character",
+ "class_name": "MClass",
+ "full_name": "test_prog::Character",
+ "mdoc": {
+ "content": "Characters can be played by both the human or the machine.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 22,
+ "line_start": 21,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 68,
+ "line_start": 21,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Character"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Character"
+ }, {
+ "full_name": "test_prog::combat$Character"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::character::Character::_race"
+ }, {
+ "full_name": "test_prog::Character::race"
+ }, {
+ "full_name": "test_prog::Character::race="
+ }, {
+ "full_name": "test_prog::character::Character::_career"
+ }, {
+ "full_name": "test_prog::Character::career"
+ }, {
+ "full_name": "test_prog::Character::career="
+ }, {
+ "full_name": "test_prog::Character::quit"
+ }, {
+ "full_name": "test_prog::character::Character::_name"
+ }, {
+ "full_name": "test_prog::Character::name"
+ }, {
+ "full_name": "test_prog::Character::name="
+ }, {
+ "full_name": "test_prog::character::Character::_age"
+ }, {
+ "full_name": "test_prog::Character::age"
+ }, {
+ "full_name": "test_prog::Character::age="
+ }, {
+ "full_name": "test_prog::character::Character::_sex"
+ }, {
+ "full_name": "test_prog::Character::sex"
+ }, {
+ "full_name": "test_prog::Character::sex="
+ }, {
+ "full_name": "test_prog::Character::total_strengh"
+ }, {
+ "full_name": "test_prog::Character::total_endurance"
+ }, {
+ "full_name": "test_prog::Character::total_intelligence"
+ }, {
+ "full_name": "test_prog::Character::max_health"
+ }, {
+ "full_name": "test_prog::character::Character::_health"
+ }, {
+ "full_name": "test_prog::Character::health"
+ }, {
+ "full_name": "test_prog::Character::health="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::Combatable::hit_points"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Combatable::attack"
+ }, {
+ "full_name": "test_prog::Combatable::direct_attack"
+ }, {
+ "full_name": "test_prog::Combatable::defend"
+ }, {
+ "full_name": "test_prog::Combatable::is_dead"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::character::Character::_race"
+ }, {
+ "full_name": "test_prog::Character::race"
+ }, {
+ "full_name": "test_prog::Character::race="
+ }, {
+ "full_name": "test_prog::character::Character::_career"
+ }, {
+ "full_name": "test_prog::Character::career"
+ }, {
+ "full_name": "test_prog::Character::career="
+ }, {
+ "full_name": "test_prog::Character::quit"
+ }, {
+ "full_name": "test_prog::character::Character::_name"
+ }, {
+ "full_name": "test_prog::Character::name"
+ }, {
+ "full_name": "test_prog::Character::name="
+ }, {
+ "full_name": "test_prog::character::Character::_age"
+ }, {
+ "full_name": "test_prog::Character::age"
+ }, {
+ "full_name": "test_prog::Character::age="
+ }, {
+ "full_name": "test_prog::character::Character::_sex"
+ }, {
+ "full_name": "test_prog::Character::sex"
+ }, {
+ "full_name": "test_prog::Character::sex="
+ }, {
+ "full_name": "test_prog::Character::total_strengh"
+ }, {
+ "full_name": "test_prog::Character::total_endurance"
+ }, {
+ "full_name": "test_prog::Character::total_intelligence"
+ }, {
+ "full_name": "test_prog::Character::max_health"
+ }, {
+ "full_name": "test_prog::character::Character::_health"
+ }, {
+ "full_name": "test_prog::Character::health"
+ }, {
+ "full_name": "test_prog::Character::health="
+ }],
+ "redef_mproperties": [{
+ "full_name": "test_prog::Object::init"
+ }, {
+ "full_name": "test_prog::Combatable::hit_points"
+ }],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }, {
+ "full_name": "test_prog::Combatable"
+ }]
+}
+{
+ "name": "Weapon",
+ "class_name": "MClass",
+ "full_name": "test_prog::Weapon",
+ "mdoc": {
+ "content": "Something that can be used to attack someone and inflict damage.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 21,
+ "line_start": 20,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "interface"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 24,
+ "line_start": 20,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Weapon"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Weapon"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Weapon::dps"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Weapon::dps"
+ }],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Combatable",
+ "class_name": "MClass",
+ "full_name": "test_prog::Combatable",
+ "mdoc": {
+ "content": "Something that can be combatted, it can `attack` and `defend`.\n\nWorld items can also be `Combatable`.\n`defend` method is then used to determines how the object react to an attack\nSome magical items can even `attack`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 31,
+ "line_start": 26,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "interface"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 51,
+ "line_start": 26,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Combatable"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Combatable"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Combatable::hit_points"
+ }, {
+ "full_name": "test_prog::Combatable::attack"
+ }, {
+ "full_name": "test_prog::Combatable::direct_attack"
+ }, {
+ "full_name": "test_prog::Combatable::defend"
+ }, {
+ "full_name": "test_prog::Combatable::is_dead"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Combatable::hit_points"
+ }, {
+ "full_name": "test_prog::Combatable::attack"
+ }, {
+ "full_name": "test_prog::Combatable::direct_attack"
+ }, {
+ "full_name": "test_prog::Combatable::defend"
+ }, {
+ "full_name": "test_prog::Combatable::is_dead"
+ }],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Game",
+ "class_name": "MClass",
+ "full_name": "test_prog::Game",
+ "mdoc": {
+ "content": "This is the interface you have to implement to use ure gaming platform.\n\nsee http://our.platform.com",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 23,
+ "line_start": 20,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "interface"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 45,
+ "line_start": 20,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Game"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::game"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Game"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Game::player_characters"
+ }, {
+ "full_name": "test_prog::Game::computer_characters"
+ }, {
+ "full_name": "test_prog::Game::start_game"
+ }, {
+ "full_name": "test_prog::Game::pause_game"
+ }, {
+ "full_name": "test_prog::Game::stop_game"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Game::player_characters"
+ }, {
+ "full_name": "test_prog::Game::computer_characters"
+ }, {
+ "full_name": "test_prog::Game::start_game"
+ }, {
+ "full_name": "test_prog::Game::pause_game"
+ }, {
+ "full_name": "test_prog::Game::stop_game"
+ }],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Starter",
+ "class_name": "MClass",
+ "full_name": "test_prog::Starter",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 23,
+ "line_start": 21,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Starter"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::test_prog"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Starter"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Starter::start"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Starter::start"
+ }],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
+{
+ "name": "Sys",
+ "class_name": "MClass",
+ "full_name": "test_prog::Sys",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "class"],
+ "location": {
+ "column_end": 13,
+ "column_start": 1,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ },
+ "mparameters": [],
+ "intro": {
+ "full_name": "test_prog$Sys"
+ },
+ "intro_mmodule": {
+ "full_name": "test_prog::test_prog"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mclassdefs": [{
+ "full_name": "test_prog$Sys"
+ }],
+ "all_mproperties": [{
+ "full_name": "test_prog::Sys::main"
+ }, {
+ "full_name": "test_prog::Object::OTHER"
+ }, {
+ "full_name": "test_prog::Object::=="
+ }, {
+ "full_name": "test_prog::Object::!="
+ }, {
+ "full_name": "test_prog::Object::init"
+ }],
+ "intro_mproperties": [{
+ "full_name": "test_prog::Sys::main"
+ }],
+ "redef_mproperties": [],
+ "parents": [{
+ "full_name": "test_prog::Object"
+ }]
+}
--- /dev/null
+{
+ "name": "test_prog",
+ "class_name": "MGroup",
+ "full_name": "test_prog>",
+ "mdoc": {
+ "content": "Test program for model tools.\n\nThis program creates a fake model that can be used to test tools like:\n\n* `nitdoc`\n* `nitmetrics`\n* `nitx`\n* or others `modelbuilder`.\n\nAn image:\n\n![Tinks3D](../../contrib/tinks/doc/tinks3d.png)",
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 12,
+ "line_start": 1,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["group"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "is_root": true,
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "default_mmodule": {
+ "full_name": "test_prog::test_prog"
+ },
+ "parent": null,
+ "mmodules": [{
+ "full_name": "test_prog::test_prog"
+ }],
+ "mgroups": [{
+ "full_name": "test_prog>game>"
+ }, {
+ "full_name": "test_prog>platform>"
+ }, {
+ "full_name": "test_prog>rpg>"
+ }]
+}
+{
+ "name": "game",
+ "class_name": "MGroup",
+ "full_name": "test_prog>game>",
+ "mdoc": {
+ "content": "Gaming group",
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 1,
+ "line_start": 1,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["group"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "is_root": false,
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "default_mmodule": {
+ "full_name": "test_prog::game"
+ },
+ "parent": {
+ "full_name": "test_prog>"
+ },
+ "mmodules": [{
+ "full_name": "test_prog::game"
+ }],
+ "mgroups": []
+}
+{
+ "name": "platform",
+ "class_name": "MGroup",
+ "full_name": "test_prog>platform>",
+ "mdoc": {
+ "content": "Fictive Crappy Platform.",
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 1,
+ "line_start": 1,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["group"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "is_root": false,
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "default_mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "parent": {
+ "full_name": "test_prog>"
+ },
+ "mmodules": [{
+ "full_name": "test_prog::platform"
+ }],
+ "mgroups": []
+}
+{
+ "name": "rpg",
+ "class_name": "MGroup",
+ "full_name": "test_prog>rpg>",
+ "mdoc": {
+ "content": "Role Playing Game group",
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 1,
+ "line_start": 1,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["group"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "is_root": false,
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "default_mmodule": {
+ "full_name": "test_prog::rpg"
+ },
+ "parent": {
+ "full_name": "test_prog>"
+ },
+ "mmodules": [{
+ "full_name": "test_prog::careers"
+ }, {
+ "full_name": "test_prog::character"
+ }, {
+ "full_name": "test_prog::combat"
+ }, {
+ "full_name": "test_prog::races"
+ }, {
+ "full_name": "test_prog::rpg"
+ }],
+ "mgroups": []
+}
+{
+ "name": "excluded",
+ "class_name": "MGroup",
+ "full_name": "excluded>",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["group"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "is_root": true,
+ "mpackage": {
+ "full_name": "excluded"
+ },
+ "default_mmodule": {
+ "full_name": "excluded::excluded"
+ },
+ "parent": null,
+ "mmodules": [{
+ "full_name": "excluded::excluded"
+ }],
+ "mgroups": []
+}
--- /dev/null
+{
+ "name": "excluded",
+ "class_name": "MModule",
+ "full_name": "excluded::excluded",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "excluded"
+ },
+ "mgroup": {
+ "full_name": "excluded>"
+ },
+ "intro_mclasses": [],
+ "mclassdefs": [],
+ "intro_mclassdefs": [],
+ "redef_mclassdefs": [],
+ "imports": []
+}
+{
+ "name": "game",
+ "class_name": "MModule",
+ "full_name": "test_prog::game",
+ "mdoc": {
+ "content": "A game abstraction for RPG.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 16,
+ "line_start": 15,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 45,
+ "line_start": 15,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>game>"
+ },
+ "intro_mclasses": [{
+ "full_name": "test_prog::Game"
+ }],
+ "mclassdefs": [{
+ "full_name": "test_prog$Game"
+ }],
+ "intro_mclassdefs": [{
+ "full_name": "test_prog$Game"
+ }],
+ "redef_mclassdefs": [],
+ "imports": [{
+ "full_name": "test_prog::rpg"
+ }]
+}
+{
+ "name": "platform",
+ "class_name": "MModule",
+ "full_name": "test_prog::platform",
+ "mdoc": {
+ "content": "Declares base types allowed on the platform.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 16,
+ "line_start": 15,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 17,
+ "column_start": 1,
+ "line_end": 59,
+ "line_start": 15,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "intro_mclasses": [{
+ "full_name": "test_prog::Object"
+ }, {
+ "full_name": "test_prog::Int"
+ }, {
+ "full_name": "test_prog::Float"
+ }, {
+ "full_name": "test_prog::Bool"
+ }, {
+ "full_name": "test_prog::String"
+ }, {
+ "full_name": "test_prog::List"
+ }],
+ "mclassdefs": [{
+ "full_name": "test_prog$Object"
+ }, {
+ "full_name": "test_prog$Int"
+ }, {
+ "full_name": "test_prog$Float"
+ }, {
+ "full_name": "test_prog$Bool"
+ }, {
+ "full_name": "test_prog$String"
+ }, {
+ "full_name": "test_prog$List"
+ }],
+ "intro_mclassdefs": [{
+ "full_name": "test_prog$Object"
+ }, {
+ "full_name": "test_prog$Int"
+ }, {
+ "full_name": "test_prog$Float"
+ }, {
+ "full_name": "test_prog$Bool"
+ }, {
+ "full_name": "test_prog$String"
+ }, {
+ "full_name": "test_prog$List"
+ }],
+ "redef_mclassdefs": [],
+ "imports": []
+}
+{
+ "name": "careers",
+ "class_name": "MModule",
+ "full_name": "test_prog::careers",
+ "mdoc": {
+ "content": "Careers of the game.\n\nAll characters can have a `Career`.\nA character can also quit its current career and start a new one.\n\nAvailable careers:\n\n * `Warrior`\n * `Magician`\n * `Alcoholic`",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 25,
+ "line_start": 15,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 69,
+ "line_start": 15,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "intro_mclasses": [{
+ "full_name": "test_prog::Career"
+ }, {
+ "full_name": "test_prog::Warrior"
+ }, {
+ "full_name": "test_prog::Magician"
+ }, {
+ "full_name": "test_prog::Alcoholic"
+ }],
+ "mclassdefs": [{
+ "full_name": "test_prog$Career"
+ }, {
+ "full_name": "test_prog$Warrior"
+ }, {
+ "full_name": "test_prog$Magician"
+ }, {
+ "full_name": "test_prog$Alcoholic"
+ }],
+ "intro_mclassdefs": [{
+ "full_name": "test_prog$Career"
+ }, {
+ "full_name": "test_prog$Warrior"
+ }, {
+ "full_name": "test_prog$Magician"
+ }, {
+ "full_name": "test_prog$Alcoholic"
+ }],
+ "redef_mclassdefs": [],
+ "imports": [{
+ "full_name": "test_prog::platform"
+ }]
+}
+{
+ "name": "character",
+ "class_name": "MModule",
+ "full_name": "test_prog::character",
+ "mdoc": {
+ "content": "Characters are playable entity in the world.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 16,
+ "line_start": 15,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 68,
+ "line_start": 15,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "intro_mclasses": [{
+ "full_name": "test_prog::Character"
+ }],
+ "mclassdefs": [{
+ "full_name": "test_prog$Character"
+ }],
+ "intro_mclassdefs": [{
+ "full_name": "test_prog$Character"
+ }],
+ "redef_mclassdefs": [],
+ "imports": [{
+ "full_name": "test_prog::races"
+ }, {
+ "full_name": "test_prog::careers"
+ }]
+}
+{
+ "name": "combat",
+ "class_name": "MModule",
+ "full_name": "test_prog::combat",
+ "mdoc": {
+ "content": "COmbat interactions between characters.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 16,
+ "line_start": 15,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 67,
+ "line_start": 15,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "intro_mclasses": [{
+ "full_name": "test_prog::Weapon"
+ }, {
+ "full_name": "test_prog::Combatable"
+ }],
+ "mclassdefs": [{
+ "full_name": "test_prog$Weapon"
+ }, {
+ "full_name": "test_prog$Combatable"
+ }, {
+ "full_name": "test_prog::combat$Character"
+ }, {
+ "full_name": "test_prog::combat$Dwarf"
+ }],
+ "intro_mclassdefs": [{
+ "full_name": "test_prog$Weapon"
+ }, {
+ "full_name": "test_prog$Combatable"
+ }],
+ "redef_mclassdefs": [{
+ "full_name": "test_prog::combat$Character"
+ }, {
+ "full_name": "test_prog::combat$Dwarf"
+ }],
+ "imports": [{
+ "full_name": "test_prog::character"
+ }]
+}
+{
+ "name": "races",
+ "class_name": "MModule",
+ "full_name": "test_prog::races",
+ "mdoc": {
+ "content": "Races of the game.\n\nAll characters belong to a `Race`.\n\nAvailable races:\n\n * `Human`\n * `Dwarf`\n * `Elf`",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 24,
+ "line_start": 15,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 78,
+ "line_start": 15,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "intro_mclasses": [{
+ "full_name": "test_prog::Race"
+ }, {
+ "full_name": "test_prog::Human"
+ }, {
+ "full_name": "test_prog::Dwarf"
+ }, {
+ "full_name": "test_prog::Elf"
+ }],
+ "mclassdefs": [{
+ "full_name": "test_prog$Race"
+ }, {
+ "full_name": "test_prog$Human"
+ }, {
+ "full_name": "test_prog$Dwarf"
+ }, {
+ "full_name": "test_prog$Elf"
+ }],
+ "intro_mclassdefs": [{
+ "full_name": "test_prog$Race"
+ }, {
+ "full_name": "test_prog$Human"
+ }, {
+ "full_name": "test_prog$Dwarf"
+ }, {
+ "full_name": "test_prog$Elf"
+ }],
+ "redef_mclassdefs": [],
+ "imports": [{
+ "full_name": "test_prog::platform"
+ }]
+}
+{
+ "name": "rpg",
+ "class_name": "MModule",
+ "full_name": "test_prog::rpg",
+ "mdoc": {
+ "content": "A worlg RPG abstraction.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 16,
+ "line_start": 15,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 13,
+ "column_start": 1,
+ "line_end": 21,
+ "line_start": 15,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "intro_mclasses": [],
+ "mclassdefs": [],
+ "intro_mclassdefs": [],
+ "redef_mclassdefs": [],
+ "imports": [{
+ "full_name": "test_prog::combat"
+ }]
+}
+{
+ "name": "test_prog",
+ "class_name": "MModule",
+ "full_name": "test_prog::test_prog",
+ "mdoc": {
+ "content": "A test program with a fake model to check model tools.",
+ "location": {
+ "column_end": 0,
+ "column_start": 1,
+ "line_end": 16,
+ "line_start": 15,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 13,
+ "column_start": 1,
+ "line_end": 26,
+ "line_start": 15,
+ "file": "test_location"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>"
+ },
+ "intro_mclasses": [{
+ "full_name": "test_prog::Starter"
+ }, {
+ "full_name": "test_prog::Sys"
+ }],
+ "mclassdefs": [{
+ "full_name": "test_prog$Starter"
+ }, {
+ "full_name": "test_prog$Sys"
+ }],
+ "intro_mclassdefs": [{
+ "full_name": "test_prog$Starter"
+ }, {
+ "full_name": "test_prog$Sys"
+ }],
+ "redef_mclassdefs": [],
+ "imports": [{
+ "full_name": "test_prog::game"
+ }]
+}
+{
+ "name": "test_prog-m",
+ "class_name": "MModule",
+ "full_name": "test_prog-m",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["module"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "mpackage": null,
+ "mgroup": null,
+ "intro_mclasses": [],
+ "mclassdefs": [],
+ "intro_mclassdefs": [],
+ "redef_mclassdefs": [],
+ "imports": [{
+ "full_name": "test_prog::test_prog"
+ }]
+}
--- /dev/null
+{
+ "name": "test_prog",
+ "class_name": "MPackage",
+ "full_name": "test_prog",
+ "mdoc": {
+ "content": "Test program for model tools.\n\nThis program creates a fake model that can be used to test tools like:\n\n* `nitdoc`\n* `nitmetrics`\n* `nitx`\n* or others `modelbuilder`.\n\nAn image:\n\n![Tinks3D](../../contrib/tinks/doc/tinks3d.png)",
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 12,
+ "line_start": 1,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["package"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "root": {
+ "full_name": "test_prog>"
+ },
+ "mgroups": [{
+ "full_name": "test_prog>"
+ }, {
+ "full_name": "test_prog>game>"
+ }, {
+ "full_name": "test_prog>platform>"
+ }, {
+ "full_name": "test_prog>rpg>"
+ }],
+ "ini": {
+ "upstream.issues": "https://github.com/nitlang/nit/issues",
+ "upstream.homepage": "http://nitlanguage.org",
+ "upstream.git.directory": "tests/test_prog",
+ "upstream.browse": "https://github.com/nitlang/nit/tree/master/tests/test_prog",
+ "source.exclude": "game/excluded.nit:game/excluded_dir",
+ "package.license": "Apache-2.0",
+ "package.more_contributors": "Riri <riri@example.com>, Fifi (http://www.example.com/~fifi), Loulou",
+ "package.maintainer": "John Doe <jdoe@example.com> (http://www.example.com/~jdoe), Spider-Man",
+ "package.tags": "test,game",
+ "package.version": "0.1",
+ "package.name": "test_prog"
+ }
+}
+{
+ "name": "excluded",
+ "class_name": "MPackage",
+ "full_name": "excluded",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["package"],
+ "location": {
+ "column_end": 0,
+ "column_start": 0,
+ "line_end": 0,
+ "line_start": 0,
+ "file": "test_location"
+ },
+ "root": {
+ "full_name": "excluded>"
+ },
+ "mgroups": [{
+ "full_name": "excluded>"
+ }]
+}
--- /dev/null
+{
+ "name": "OTHER",
+ "class_name": "MVirtualTypeDef",
+ "full_name": "test_prog$Object$OTHER",
+ "mdoc": {
+ "content": "Used for comparisons.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 23,
+ "line_start": 22,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "type"],
+ "location": {
+ "column_end": 28,
+ "column_start": 2,
+ "line_end": 23,
+ "line_start": 22,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::OTHER"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$OTHER"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "bound": {
+ "full_name": "nullable test_prog::Object"
+ },
+ "is_fixed": false
+}
+{
+ "name": "==",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Object$==",
+ "mdoc": {
+ "content": "Is `other` equqls to `self`?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 37,
+ "column_start": 2,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::=="
+ },
+ "intro": {
+ "full_name": "test_prog$Object$=="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "other",
+ "mtype": {
+ "full_name": "test_prog::Object::OTHER"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "!=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Object$!=",
+ "mdoc": {
+ "content": "Is `other` different from `self`?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 28,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 55,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 28,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::!="
+ },
+ "intro": {
+ "full_name": "test_prog$Object$!="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "other",
+ "mtype": {
+ "full_name": "test_prog::Object::OTHER"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Object$init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "init"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 30,
+ "line_start": 20,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Career$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 12,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Warrior$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 46,
+ "line_start": 42,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Warrior"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Magician$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 57,
+ "line_start": 53,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Magician"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Alcoholic$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 68,
+ "line_start": 64,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Alcoholic"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Race$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 12,
+ "column_start": 2,
+ "line_end": 44,
+ "line_start": 44,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Human$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 55,
+ "line_start": 51,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Human"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Dwarf$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 66,
+ "line_start": 62,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Dwarf"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Elf$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 77,
+ "line_start": 73,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Elf"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["redef", "init"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 68,
+ "line_start": 21,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Object::init"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "unary -",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Int$unary -",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 21,
+ "column_start": 2,
+ "line_end": 34,
+ "line_start": 34,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Int::unary -"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$unary -"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "+",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Int$+",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Int::+"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$+"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "-",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Int$-",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Int::-"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$-"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "*",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Int$*",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 37,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Int::*"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$*"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "/",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Int$/",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 38,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Int::/"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$/"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": ">",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Int$>",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 30,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 39,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Int::>"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$>"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "to_f",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Int$to_f",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 26,
+ "column_start": 2,
+ "line_end": 40,
+ "line_start": 40,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Int::to_f"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$to_f"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "+",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Float$+",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 33,
+ "column_start": 2,
+ "line_end": 45,
+ "line_start": 45,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Float::+"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$+"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "-",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Float$-",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 33,
+ "column_start": 2,
+ "line_end": 46,
+ "line_start": 46,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Float::-"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$-"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "*",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Float$*",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 33,
+ "column_start": 2,
+ "line_end": 47,
+ "line_start": 47,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Float::*"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$*"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "/",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Float$/",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 33,
+ "column_start": 2,
+ "line_end": 48,
+ "line_start": 48,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Float::/"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$/"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": ">",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Float$>",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 32,
+ "column_start": 2,
+ "line_end": 49,
+ "line_start": 49,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Float::>"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$>"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mmodule": {
+ "full_name": "test_prog::platform"
+ },
+ "mgroup": {
+ "full_name": "test_prog>platform>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_strength_bonus",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Career$_strength_bonus",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 31,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::careers::Career::_strength_bonus"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$_strength_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "strength_bonus",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Career$strength_bonus",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 31,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Career::strength_bonus"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$strength_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "strength_bonus=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Career$strength_bonus=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 31,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Career::strength_bonus="
+ },
+ "intro": {
+ "full_name": "test_prog$Career$strength_bonus="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "strength_bonus",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_endurance_bonus",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Career$_endurance_bonus",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 25,
+ "column_start": 2,
+ "line_end": 32,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::careers::Career::_endurance_bonus"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$_endurance_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "endurance_bonus",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Career$endurance_bonus",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 25,
+ "column_start": 2,
+ "line_end": 32,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Career::endurance_bonus"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$endurance_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "endurance_bonus=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Career$endurance_bonus=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 25,
+ "column_start": 2,
+ "line_end": 32,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Career::endurance_bonus="
+ },
+ "intro": {
+ "full_name": "test_prog$Career$endurance_bonus="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "endurance_bonus",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_intelligence_bonus",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Career$_intelligence_bonus",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 28,
+ "column_start": 2,
+ "line_end": 33,
+ "line_start": 33,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::careers::Career::_intelligence_bonus"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$_intelligence_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "intelligence_bonus",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Career$intelligence_bonus",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 28,
+ "column_start": 2,
+ "line_end": 33,
+ "line_start": 33,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Career::intelligence_bonus"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$intelligence_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "intelligence_bonus=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Career$intelligence_bonus=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 28,
+ "column_start": 2,
+ "line_end": 33,
+ "line_start": 33,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Career::intelligence_bonus="
+ },
+ "intro": {
+ "full_name": "test_prog$Career$intelligence_bonus="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mmodule": {
+ "full_name": "test_prog::careers"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "intelligence_bonus",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_base_strength",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Race$_base_strength",
+ "mdoc": {
+ "content": "Used to represents how strong the race is.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 23,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::races::Race::_base_strength"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$_base_strength"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "base_strength",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Race$base_strength",
+ "mdoc": {
+ "content": "Used to represents how strong the race is.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 23,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Race::base_strength"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_strength"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "base_strength=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Race$base_strength=",
+ "mdoc": {
+ "content": "Used to represents how strong the race is.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 23,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Race::base_strength="
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_strength="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "base_strength",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_base_endurance",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Race$_base_endurance",
+ "mdoc": {
+ "content": "Used to represents how the race can absorb damage.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::races::Race::_base_endurance"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$_base_endurance"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "base_endurance",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Race$base_endurance",
+ "mdoc": {
+ "content": "Used to represents how the race can absorb damage.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Race::base_endurance"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_endurance"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "base_endurance=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Race$base_endurance=",
+ "mdoc": {
+ "content": "Used to represents how the race can absorb damage.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Race::base_endurance="
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_endurance="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "base_endurance",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_base_intelligence",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Race$_base_intelligence",
+ "mdoc": {
+ "content": "Is this race smart?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::races::Race::_base_intelligence"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$_base_intelligence"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "base_intelligence",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Race$base_intelligence",
+ "mdoc": {
+ "content": "Is this race smart?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Race::base_intelligence"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_intelligence"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "base_intelligence=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Race$base_intelligence=",
+ "mdoc": {
+ "content": "Is this race smart?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Race::base_intelligence="
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_intelligence="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mmodule": {
+ "full_name": "test_prog::races"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "base_intelligence",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_race",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Character$_race",
+ "mdoc": {
+ "content": "The `Race` of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 15,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::character::Character::_race"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_race"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Race"
+ }
+}
+{
+ "name": "race",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$race",
+ "mdoc": {
+ "content": "The `Race` of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 15,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::race"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$race"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Race"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "race=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$race=",
+ "mdoc": {
+ "content": "The `Race` of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 15,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::race="
+ },
+ "intro": {
+ "full_name": "test_prog$Character$race="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "race",
+ "mtype": {
+ "full_name": "test_prog::Race"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_career",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Character$_career",
+ "mdoc": {
+ "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 47,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::character::Character::_career"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_career"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "nullable test_prog::Career"
+ }
+}
+{
+ "name": "career",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$career",
+ "mdoc": {
+ "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 47,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::career"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$career"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "nullable test_prog::Career"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "career=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$career=",
+ "mdoc": {
+ "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 47,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::career="
+ },
+ "intro": {
+ "full_name": "test_prog$Character$career="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "career",
+ "mtype": {
+ "full_name": "nullable test_prog::Career"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "quit",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$quit",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 33,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::quit"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$quit"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_name",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Character$_name",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 17,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::character::Character::_name"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_name"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::String"
+ }
+}
+{
+ "name": "name",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$name",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 17,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::name"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$name"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::String"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "name=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$name=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 17,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::name="
+ },
+ "intro": {
+ "full_name": "test_prog$Character$name="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "name",
+ "mtype": {
+ "full_name": "test_prog::String"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_age",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Character$_age",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 13,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::character::Character::_age"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_age"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "age",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$age",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 13,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::age"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$age"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "age=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$age=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 13,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::age="
+ },
+ "intro": {
+ "full_name": "test_prog$Character$age="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "age",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_sex",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Character$_sex",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 14,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 37,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::character::Character::_sex"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_sex"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Bool"
+ }
+}
+{
+ "name": "sex",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$sex",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 14,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 37,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::sex"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$sex"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "sex=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$sex=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 14,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 37,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::sex="
+ },
+ "intro": {
+ "full_name": "test_prog$Character$sex="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "sex",
+ "mtype": {
+ "full_name": "test_prog::Bool"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "total_strengh",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$total_strengh",
+ "mdoc": {
+ "content": "The actual strength of the character.\n\nReturns `race.base_strength + career.strength_bonus` or just `race.base_strength` is unemployed.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 39,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 45,
+ "line_start": 39,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::total_strengh"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$total_strengh"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "total_endurance",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$total_endurance",
+ "mdoc": {
+ "content": "The actual endurance of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 48,
+ "line_start": 47,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 51,
+ "line_start": 47,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::total_endurance"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$total_endurance"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "total_intelligence",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$total_intelligence",
+ "mdoc": {
+ "content": "The acutal intelligence of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 54,
+ "line_start": 53,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 57,
+ "line_start": 53,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::total_intelligence"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$total_intelligence"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "max_health",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$max_health",
+ "mdoc": {
+ "content": "Maximum health of the character.\n\nBased on `total endurance * 10`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 62,
+ "line_start": 59,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 51,
+ "column_start": 2,
+ "line_end": 62,
+ "line_start": 59,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::max_health"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$max_health"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_health",
+ "class_name": "MAttributeDef",
+ "full_name": "test_prog$Character$_health",
+ "mdoc": {
+ "content": "The current `health` of the character.\n\nStarts at `max_health`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::character::Character::_health"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_health"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "health",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$health",
+ "mdoc": {
+ "content": "The current `health` of the character.\n\nStarts at `max_health`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::health"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$health"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "health=",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Character$health=",
+ "mdoc": {
+ "content": "The current `health` of the character.\n\nStarts at `max_health`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Character::health="
+ },
+ "intro": {
+ "full_name": "test_prog$Character$health="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mmodule": {
+ "full_name": "test_prog::character"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "health",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "dps",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Weapon$dps",
+ "mdoc": {
+ "content": "Damage per second inflicted by this weapon.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 23,
+ "line_start": 22,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 23,
+ "line_start": 22,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Weapon"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Weapon::dps"
+ },
+ "intro": {
+ "full_name": "test_prog$Weapon$dps"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Weapon"
+ },
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "dps",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog::combat$Dwarf$Weapon::dps",
+ "mdoc": {
+ "content": "Dwarf `dps` are based on the dwarf `base_endurance` (represents weight here)",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 66,
+ "line_start": 65,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["redef", "fun"],
+ "location": {
+ "column_end": 51,
+ "column_start": 2,
+ "line_end": 66,
+ "line_start": 65,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog::combat$Dwarf"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Weapon::dps"
+ },
+ "intro": {
+ "full_name": "test_prog$Weapon$dps"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Weapon"
+ },
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "hit_points",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Combatable$hit_points",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 32,
+ "column_start": 2,
+ "line_end": 32,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Combatable::hit_points"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$hit_points"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "hit_points",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog::combat$Character$Combatable::hit_points",
+ "mdoc": {
+ "content": "Use character `health` to determines hit_points.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 58,
+ "line_start": 57,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["redef", "fun"],
+ "location": {
+ "column_end": 38,
+ "column_start": 2,
+ "line_end": 58,
+ "line_start": 57,
+ "file": "test_location"
+ },
+ "is_intro": false,
+ "mclassdef": {
+ "full_name": "test_prog::combat$Character"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Combatable::hit_points"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$hit_points"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "attack",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Combatable$attack",
+ "mdoc": {
+ "content": "A `Combatable` can attack a `target` that is also a `Combatable`.\n\nAttack the `target` using `wepaon` and returns the number of inflicted hit points.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 34,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 64,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 34,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Combatable::attack"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$attack"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 2,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "target",
+ "mtype": {
+ "full_name": "test_prog::Combatable"
+ }
+ }, {
+ "is_vararg": false,
+ "name": "weapon",
+ "mtype": {
+ "full_name": "test_prog::Weapon"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "direct_attack",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Combatable$direct_attack",
+ "mdoc": {
+ "content": "Like `attack` but cannot be defended.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 40,
+ "line_start": 39,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 71,
+ "column_start": 2,
+ "line_end": 40,
+ "line_start": 39,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Combatable::direct_attack"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$direct_attack"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 2,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "target",
+ "mtype": {
+ "full_name": "test_prog::Combatable"
+ }
+ }, {
+ "is_vararg": false,
+ "name": "weapon",
+ "mtype": {
+ "full_name": "test_prog::Weapon"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "defend",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Combatable$defend",
+ "mdoc": {
+ "content": "`Combatable` can defend against attacks.\n\nDefends against a number of received hit points and return the number of pared hit points.\n\n@param hit: damage received.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 47,
+ "line_start": 42,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 38,
+ "column_start": 2,
+ "line_end": 47,
+ "line_start": 42,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Combatable::defend"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$defend"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "hit",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "is_dead",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Combatable$is_dead",
+ "mdoc": {
+ "content": "Is the character still have hit_points?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 50,
+ "line_start": 49,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 43,
+ "column_start": 2,
+ "line_end": 50,
+ "line_start": 49,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Combatable::is_dead"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$is_dead"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mmodule": {
+ "full_name": "test_prog::combat"
+ },
+ "mgroup": {
+ "full_name": "test_prog>rpg>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "player_characters",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Game$player_characters",
+ "mdoc": {
+ "content": "Characters played by human players.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 51,
+ "column_start": 2,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Game::player_characters"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$player_characters"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mmodule": {
+ "full_name": "test_prog::game"
+ },
+ "mgroup": {
+ "full_name": "test_prog>game>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::List[test_prog::Character]"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "computer_characters",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Game$computer_characters",
+ "mdoc": {
+ "content": "Characters players by computer.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 28,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 53,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 28,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Game::computer_characters"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$computer_characters"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mmodule": {
+ "full_name": "test_prog::game"
+ },
+ "mgroup": {
+ "full_name": "test_prog>game>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::List[test_prog::Character]"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "start_game",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Game$start_game",
+ "mdoc": {
+ "content": "Start the game.\n\nYou have to implement that method!",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 34,
+ "line_start": 31,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 34,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Game::start_game"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$start_game"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mmodule": {
+ "full_name": "test_prog::game"
+ },
+ "mgroup": {
+ "full_name": "test_prog>game>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "pause_game",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Game$pause_game",
+ "mdoc": {
+ "content": "Pause the game.\n\nYou have to implement that method!",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 36,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Game::pause_game"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$pause_game"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mmodule": {
+ "full_name": "test_prog::game"
+ },
+ "mgroup": {
+ "full_name": "test_prog>game>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "stop_game",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Game$stop_game",
+ "mdoc": {
+ "content": "Stop the game.\n\nYou have to implement that method!",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 44,
+ "line_start": 41,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 26,
+ "column_start": 2,
+ "line_end": 44,
+ "line_start": 41,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Game::stop_game"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$stop_game"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mmodule": {
+ "full_name": "test_prog::game"
+ },
+ "mgroup": {
+ "full_name": "test_prog>game>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "start",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Starter$start",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 17,
+ "column_start": 2,
+ "line_end": 22,
+ "line_start": 22,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Starter"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Starter::start"
+ },
+ "intro": {
+ "full_name": "test_prog$Starter$start"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Starter"
+ },
+ "mmodule": {
+ "full_name": "test_prog::test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "main",
+ "class_name": "MMethodDef",
+ "full_name": "test_prog$Sys$main",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 13,
+ "column_start": 1,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ },
+ "is_intro": true,
+ "mclassdef": {
+ "full_name": "test_prog$Sys"
+ },
+ "mproperty": {
+ "full_name": "test_prog::Sys::main"
+ },
+ "intro": {
+ "full_name": "test_prog$Sys$main"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Sys"
+ },
+ "mmodule": {
+ "full_name": "test_prog::test_prog"
+ },
+ "mgroup": {
+ "full_name": "test_prog>"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
--- /dev/null
+{
+ "name": "OTHER",
+ "class_name": "MVirtualTypeProp",
+ "full_name": "test_prog::Object::OTHER",
+ "mdoc": {
+ "content": "Used for comparisons.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 23,
+ "line_start": 22,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "type"],
+ "location": {
+ "column_end": 28,
+ "column_start": 2,
+ "line_end": 23,
+ "line_start": 22,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$OTHER"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Object$OTHER"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Object"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "mvirtualtype": {
+ "full_name": "test_prog::Object::OTHER"
+ },
+ "bound": {
+ "full_name": "nullable test_prog::Object"
+ }
+}
+{
+ "name": "==",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Object::==",
+ "mdoc": {
+ "content": "Is `other` equqls to `self`?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 37,
+ "column_start": 2,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$=="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Object$=="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Object"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "other",
+ "mtype": {
+ "full_name": "test_prog::Object::OTHER"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "!=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Object::!=",
+ "mdoc": {
+ "content": "Is `other` different from `self`?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 28,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 55,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 28,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$!="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Object$!="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Object"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "other",
+ "mtype": {
+ "full_name": "test_prog::Object::OTHER"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "init",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Object::init",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "init"],
+ "location": {
+ "column_end": 3,
+ "column_start": 1,
+ "line_end": 30,
+ "line_start": 20,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Object$init"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Object"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Object$init"
+ }, {
+ "full_name": "test_prog$Career$Object::init"
+ }, {
+ "full_name": "test_prog$Warrior$Object::init"
+ }, {
+ "full_name": "test_prog$Magician$Object::init"
+ }, {
+ "full_name": "test_prog$Alcoholic$Object::init"
+ }, {
+ "full_name": "test_prog$Race$Object::init"
+ }, {
+ "full_name": "test_prog$Human$Object::init"
+ }, {
+ "full_name": "test_prog$Dwarf$Object::init"
+ }, {
+ "full_name": "test_prog$Elf$Object::init"
+ }, {
+ "full_name": "test_prog$Character$Object::init"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Object"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": true,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "unary -",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Int::unary -",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 21,
+ "column_start": 2,
+ "line_end": 34,
+ "line_start": 34,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$unary -"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Int$unary -"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Int"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "+",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Int::+",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$+"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Int$+"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Int"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "-",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Int::-",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$-"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Int$-"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Int"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "*",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Int::*",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 37,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$*"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Int$*"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Int"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "/",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Int::/",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 38,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$/"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Int$/"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Int"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": ">",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Int::>",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 30,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 39,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$>"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Int$>"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Int"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "i",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "to_f",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Int::to_f",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 26,
+ "column_start": 2,
+ "line_end": 40,
+ "line_start": 40,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Int$to_f"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Int"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Int$to_f"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Int"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "+",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Float::+",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 33,
+ "column_start": 2,
+ "line_end": 45,
+ "line_start": 45,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$+"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Float$+"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Float"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "-",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Float::-",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 33,
+ "column_start": 2,
+ "line_end": 46,
+ "line_start": 46,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$-"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Float$-"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Float"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "*",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Float::*",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 33,
+ "column_start": 2,
+ "line_end": 47,
+ "line_start": 47,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$*"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Float$*"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Float"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "/",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Float::/",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 33,
+ "column_start": 2,
+ "line_end": 48,
+ "line_start": 48,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$/"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Float$/"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Float"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": ">",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Float::>",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "intern", "fun"],
+ "location": {
+ "column_end": 32,
+ "column_start": 2,
+ "line_end": 49,
+ "line_start": 49,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Float$>"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Float"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Float$>"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Float"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "f",
+ "mtype": {
+ "full_name": "test_prog::Float"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_strength_bonus",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::careers::Career::_strength_bonus",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 31,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$_strength_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$_strength_bonus"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "strength_bonus",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Career::strength_bonus",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 31,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$strength_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$strength_bonus"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "strength_bonus=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Career::strength_bonus=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 31,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$strength_bonus="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$strength_bonus="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "strength_bonus",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_endurance_bonus",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::careers::Career::_endurance_bonus",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 25,
+ "column_start": 2,
+ "line_end": 32,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$_endurance_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$_endurance_bonus"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "endurance_bonus",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Career::endurance_bonus",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 25,
+ "column_start": 2,
+ "line_end": 32,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$endurance_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$endurance_bonus"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "endurance_bonus=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Career::endurance_bonus=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 25,
+ "column_start": 2,
+ "line_end": 32,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$endurance_bonus="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$endurance_bonus="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "endurance_bonus",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_intelligence_bonus",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::careers::Career::_intelligence_bonus",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 28,
+ "column_start": 2,
+ "line_end": 33,
+ "line_start": 33,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$_intelligence_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$_intelligence_bonus"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "intelligence_bonus",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Career::intelligence_bonus",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 28,
+ "column_start": 2,
+ "line_end": 33,
+ "line_start": 33,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$intelligence_bonus"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$intelligence_bonus"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "intelligence_bonus=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Career::intelligence_bonus=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 28,
+ "column_start": 2,
+ "line_end": 33,
+ "line_start": 33,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Career$intelligence_bonus="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Career"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Career$intelligence_bonus="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Career"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "intelligence_bonus",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_base_strength",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::races::Race::_base_strength",
+ "mdoc": {
+ "content": "Used to represents how strong the race is.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 23,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$_base_strength"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$_base_strength"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "base_strength",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Race::base_strength",
+ "mdoc": {
+ "content": "Used to represents how strong the race is.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 23,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_strength"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$base_strength"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "base_strength=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Race::base_strength=",
+ "mdoc": {
+ "content": "Used to represents how strong the race is.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 23,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_strength="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$base_strength="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "base_strength",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_base_endurance",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::races::Race::_base_endurance",
+ "mdoc": {
+ "content": "Used to represents how the race can absorb damage.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$_base_endurance"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$_base_endurance"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "base_endurance",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Race::base_endurance",
+ "mdoc": {
+ "content": "Used to represents how the race can absorb damage.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_endurance"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$base_endurance"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "base_endurance=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Race::base_endurance=",
+ "mdoc": {
+ "content": "Used to represents how the race can absorb damage.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 24,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 38,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_endurance="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$base_endurance="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "base_endurance",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_base_intelligence",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::races::Race::_base_intelligence",
+ "mdoc": {
+ "content": "Is this race smart?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$_base_intelligence"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$_base_intelligence"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "base_intelligence",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Race::base_intelligence",
+ "mdoc": {
+ "content": "Is this race smart?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_intelligence"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$base_intelligence"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "base_intelligence=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Race::base_intelligence=",
+ "mdoc": {
+ "content": "Is this race smart?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 41,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Race$base_intelligence="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Race"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Race$base_intelligence="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Race"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "base_intelligence",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_race",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::character::Character::_race",
+ "mdoc": {
+ "content": "The `Race` of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 15,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_race"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$_race"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Race"
+ }
+}
+{
+ "name": "race",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::race",
+ "mdoc": {
+ "content": "The `Race` of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 15,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$race"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$race"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Race"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "race=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::race=",
+ "mdoc": {
+ "content": "The `Race` of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 15,
+ "column_start": 2,
+ "line_end": 25,
+ "line_start": 24,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$race="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$race="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "race",
+ "mtype": {
+ "full_name": "test_prog::Race"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_career",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::character::Character::_career",
+ "mdoc": {
+ "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 47,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_career"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$_career"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "nullable test_prog::Career"
+ }
+}
+{
+ "name": "career",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::career",
+ "mdoc": {
+ "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 47,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$career"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$career"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "nullable test_prog::Career"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "career=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::career=",
+ "mdoc": {
+ "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 47,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 27,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$career="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$career="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "career",
+ "mtype": {
+ "full_name": "nullable test_prog::Career"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "quit",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::quit",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 33,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$quit"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$quit"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_name",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::character::Character::_name",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 17,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_name"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$_name"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::String"
+ }
+}
+{
+ "name": "name",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::name",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 17,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$name"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$name"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::String"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "name=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::name=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 17,
+ "column_start": 2,
+ "line_end": 35,
+ "line_start": 35,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$name="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$name="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "name",
+ "mtype": {
+ "full_name": "test_prog::String"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_age",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::character::Character::_age",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 13,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_age"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$_age"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "age",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::age",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 13,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$age"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$age"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "age=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::age=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 13,
+ "column_start": 2,
+ "line_end": 36,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$age="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$age="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "age",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_sex",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::character::Character::_sex",
+ "mdoc": null,
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 14,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 37,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_sex"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$_sex"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Bool"
+ }
+}
+{
+ "name": "sex",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::sex",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 14,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 37,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$sex"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$sex"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "sex=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::sex=",
+ "mdoc": null,
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 14,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 37,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$sex="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$sex="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "sex",
+ "mtype": {
+ "full_name": "test_prog::Bool"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "total_strengh",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::total_strengh",
+ "mdoc": {
+ "content": "The actual strength of the character.\n\nReturns `race.base_strength + career.strength_bonus` or just `race.base_strength` is unemployed.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 42,
+ "line_start": 39,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 45,
+ "line_start": 39,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$total_strengh"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$total_strengh"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "total_endurance",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::total_endurance",
+ "mdoc": {
+ "content": "The actual endurance of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 48,
+ "line_start": 47,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 51,
+ "line_start": 47,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$total_endurance"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$total_endurance"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "total_intelligence",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::total_intelligence",
+ "mdoc": {
+ "content": "The acutal intelligence of the character.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 54,
+ "line_start": 53,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 4,
+ "column_start": 2,
+ "line_end": 57,
+ "line_start": 53,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$total_intelligence"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$total_intelligence"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "max_health",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::max_health",
+ "mdoc": {
+ "content": "Maximum health of the character.\n\nBased on `total endurance * 10`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 62,
+ "line_start": 59,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 51,
+ "column_start": 2,
+ "line_end": 62,
+ "line_start": 59,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$max_health"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$max_health"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "_health",
+ "class_name": "MAttribute",
+ "full_name": "test_prog::character::Character::_health",
+ "mdoc": {
+ "content": "The current `health` of the character.\n\nStarts at `max_health`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ }
+ },
+ "visibility": "private",
+ "modifiers": ["private", "var"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$_health"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$_health"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "static_mtype": {
+ "full_name": "test_prog::Int"
+ }
+}
+{
+ "name": "health",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::health",
+ "mdoc": {
+ "content": "The current `health` of the character.\n\nStarts at `max_health`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$health"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$health"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "health=",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Character::health=",
+ "mdoc": {
+ "content": "The current `health` of the character.\n\nStarts at `max_health`.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ }
+ },
+ "visibility": "protected",
+ "modifiers": ["protected", "fun"],
+ "location": {
+ "column_end": 29,
+ "column_start": 2,
+ "line_end": 67,
+ "line_start": 64,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Character$health="
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Character"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Character$health="
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Character"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "health",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "dps",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Weapon::dps",
+ "mdoc": {
+ "content": "Damage per second inflicted by this weapon.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 23,
+ "line_start": 22,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 23,
+ "line_start": 22,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Weapon$dps"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Weapon"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Weapon$dps"
+ }, {
+ "full_name": "test_prog::combat$Dwarf$Weapon::dps"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Weapon"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Float"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "hit_points",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Combatable::hit_points",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 32,
+ "column_start": 2,
+ "line_end": 32,
+ "line_start": 32,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$hit_points"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Combatable$hit_points"
+ }, {
+ "full_name": "test_prog::combat$Character$Combatable::hit_points"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Combatable"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "attack",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Combatable::attack",
+ "mdoc": {
+ "content": "A `Combatable` can attack a `target` that is also a `Combatable`.\n\nAttack the `target` using `wepaon` and returns the number of inflicted hit points.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 34,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 64,
+ "column_start": 2,
+ "line_end": 37,
+ "line_start": 34,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$attack"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Combatable$attack"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Combatable"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 2,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "target",
+ "mtype": {
+ "full_name": "test_prog::Combatable"
+ }
+ }, {
+ "is_vararg": false,
+ "name": "weapon",
+ "mtype": {
+ "full_name": "test_prog::Weapon"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "direct_attack",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Combatable::direct_attack",
+ "mdoc": {
+ "content": "Like `attack` but cannot be defended.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 40,
+ "line_start": 39,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 71,
+ "column_start": 2,
+ "line_end": 40,
+ "line_start": 39,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$direct_attack"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Combatable$direct_attack"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Combatable"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 2,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "target",
+ "mtype": {
+ "full_name": "test_prog::Combatable"
+ }
+ }, {
+ "is_vararg": false,
+ "name": "weapon",
+ "mtype": {
+ "full_name": "test_prog::Weapon"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "defend",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Combatable::defend",
+ "mdoc": {
+ "content": "`Combatable` can defend against attacks.\n\nDefends against a number of received hit points and return the number of pared hit points.\n\n@param hit: damage received.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 47,
+ "line_start": 42,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 38,
+ "column_start": 2,
+ "line_end": 47,
+ "line_start": 42,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$defend"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Combatable$defend"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Combatable"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 1,
+ "mparams": [{
+ "is_vararg": false,
+ "name": "hit",
+ "mtype": {
+ "full_name": "test_prog::Int"
+ }
+ }],
+ "return_mtype": {
+ "full_name": "test_prog::Int"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "is_dead",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Combatable::is_dead",
+ "mdoc": {
+ "content": "Is the character still have hit_points?",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 50,
+ "line_start": 49,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 43,
+ "column_start": 2,
+ "line_end": 50,
+ "line_start": 49,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Combatable$is_dead"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Combatable"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Combatable$is_dead"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Combatable"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::Bool"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "player_characters",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Game::player_characters",
+ "mdoc": {
+ "content": "Characters played by human players.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 51,
+ "column_start": 2,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$player_characters"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Game$player_characters"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Game"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::List[test_prog::Character]"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "computer_characters",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Game::computer_characters",
+ "mdoc": {
+ "content": "Characters players by computer.",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 28,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 53,
+ "column_start": 2,
+ "line_end": 29,
+ "line_start": 28,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$computer_characters"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Game$computer_characters"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Game"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": {
+ "full_name": "test_prog::List[test_prog::Character]"
+ },
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "start_game",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Game::start_game",
+ "mdoc": {
+ "content": "Start the game.\n\nYou have to implement that method!",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 34,
+ "line_start": 31,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 34,
+ "line_start": 31,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$start_game"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Game$start_game"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Game"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "pause_game",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Game::pause_game",
+ "mdoc": {
+ "content": "Pause the game.\n\nYou have to implement that method!",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 36,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 27,
+ "column_start": 2,
+ "line_end": 39,
+ "line_start": 36,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$pause_game"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Game$pause_game"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Game"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "stop_game",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Game::stop_game",
+ "mdoc": {
+ "content": "Stop the game.\n\nYou have to implement that method!",
+ "location": {
+ "column_end": 0,
+ "column_start": 2,
+ "line_end": 44,
+ "line_start": 41,
+ "file": "test_location"
+ }
+ },
+ "visibility": "public",
+ "modifiers": ["public", "abstract", "fun"],
+ "location": {
+ "column_end": 26,
+ "column_start": 2,
+ "line_end": 44,
+ "line_start": 41,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Game$stop_game"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Game"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Game$stop_game"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Game"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "start",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Starter::start",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 17,
+ "column_start": 2,
+ "line_end": 22,
+ "line_start": 22,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Starter$start"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Starter"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Starter$start"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Starter"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
+{
+ "name": "main",
+ "class_name": "MMethod",
+ "full_name": "test_prog::Sys::main",
+ "mdoc": null,
+ "visibility": "public",
+ "modifiers": ["public", "fun"],
+ "location": {
+ "column_end": 13,
+ "column_start": 1,
+ "line_end": 26,
+ "line_start": 25,
+ "file": "test_location"
+ },
+ "intro": {
+ "full_name": "test_prog$Sys$main"
+ },
+ "intro_mclassdef": {
+ "full_name": "test_prog$Sys"
+ },
+ "mpropdefs": [{
+ "full_name": "test_prog$Sys$main"
+ }],
+ "intro_mclass": {
+ "full_name": "test_prog::Sys"
+ },
+ "mpackage": {
+ "full_name": "test_prog"
+ },
+ "is_init": false,
+ "msignature": {
+ "arity": 0,
+ "mparams": [],
+ "return_mtype": null,
+ "vararg_rank": -1
+ }
+}
--- /dev/null
+{
+ "full_name": "test_prog"
+}
+{
+ "full_name": "excluded::excluded"
+}
+{
+ "full_name": "test_prog::Object"
+}