nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge: Reworked crypto.nit to introduce basic XOR attacks
[nit.git]
/
src
/
model
/
mmodule.nit
diff --git
a/src/model/mmodule.nit
b/src/model/mmodule.nit
index
fdfe399
..
1232352
100644
(file)
--- a/
src/model/mmodule.nit
+++ b/
src/model/mmodule.nit
@@
-17,7
+17,6
@@
# modules and module hierarchies in the metamodel
module mmodule
# modules and module hierarchies in the metamodel
module mmodule
-import location
import mpackage
private import more_collections
import mpackage
private import more_collections
@@
-65,6
+64,7
@@
redef class MGroup
redef fun mdoc_or_fallback
do
if mdoc != null then return mdoc
redef fun mdoc_or_fallback
do
if mdoc != null then return mdoc
+ var default_mmodule = self.default_mmodule
if default_mmodule == null then return null
return default_mmodule.mdoc_or_fallback
end
if default_mmodule == null then return null
return default_mmodule.mdoc_or_fallback
end
@@
-80,6
+80,15
@@
class MModule
# The group of module in the package if any
var mgroup: nullable MGroup
# The group of module in the package if any
var mgroup: nullable MGroup
+ # The path of the module source, if any
+ #
+ # safe alias to `location.file.filepath`
+ fun filepath: nullable String do
+ var res = self.location.file
+ if res == null then return null
+ return res.filename
+ end
+
# The package of the module if any
# Safe alias for `mgroup.mpackage`
fun mpackage: nullable MPackage
# The package of the module if any
# Safe alias for `mgroup.mpackage`
fun mpackage: nullable MPackage
@@
-91,8
+100,7
@@
class MModule
# The short name of the module
redef var name: String
# The short name of the module
redef var name: String
- # The origin of the definition
- var location: Location
+ redef var location: Location is writable
# Alias for `name`
redef fun to_s do return self.name
# Alias for `name`
redef fun to_s do return self.name
@@
-105,11
+113,13
@@
class MModule
# It is usually the `name` prefixed by the package's name.
# Example: `"package::name"`
#
# It is usually the `name` prefixed by the package's name.
# Example: `"package::name"`
#
- # If both names are the same (of if the module is package-less), then
- # the short-name is used alone.
+ # Default modules use a doubled name to distinguish them from the package name.
+ # E.g.: `"core::core"`
+ #
+ # If the module is package-less, then the short-name is used alone.
redef var full_name is lazy do
var mgroup = self.mgroup
redef var full_name is lazy do
var mgroup = self.mgroup
- if mgroup == null or mgroup.mpackage.name == self.name then
+ if mgroup == null then
return self.name
else
return "{mgroup.mpackage.name}::{self.name}"
return self.name
else
return "{mgroup.mpackage.name}::{self.name}"
@@
-164,6
+174,7
@@
class MModule
do
model.mmodules_by_name.add_one(name, self)
model.mmodules.add(self)
do
model.mmodules_by_name.add_one(name, self)
model.mmodules.add(self)
+ var mgroup = self.mgroup
if mgroup != null then
mgroup.mmodules.add(self)
if mgroup.name == name then
if mgroup != null then
mgroup.mmodules.add(self)
if mgroup.name == name then