NITCOPT=
- all: bin/nitc bin/nitdoc doc/stdlib/index.html
+ all: bin/nitc bin/nitdoc doc/stdlib/index.html bin/nits
+docs: doc/stdlib/index.html doc/nitc/index.html
+
+
bin/nitc: c_src/nitc src/parser/parser.nit
@echo '***************************************************************'
@echo '* Compile nitc from NIT source files *'
@echo '* Compile nitdoc from NIT source files *'
@echo '***************************************************************'
src/git-gen-version.sh
- bin/nitc ${NITCOPT} -o bin/nitdoc -O -v src/nitdoc.nit
+ cd src; ../bin/nitc ${NITCOPT} -o ../bin/nitdoc -O -v nitdoc.nit
+ bin/nits: bin/nitc
+ @echo '***************************************************************'
+ @echo '* Compile nits from NIT source files *'
+ @echo '***************************************************************'
+ bin/nitc ${NITCOPT} -o bin/nits -O -v src/nits.nit
+
doc/stdlib/index.html: bin/nitdoc
@echo '***************************************************************'
@echo '* Generate doc for NIT standard library *'
import abstracttool
import analysis
import program
-private import compiling
-private import syntax
+import compiling
+import syntax
+ import native_interface
+ import separate_options
# The main class of the nitcompiler program
class NitCompiler
package mmbuilder
import syntax_base
+ private import primitive_info
+redef class ToolContext
+ redef fun handle_property_conflict(lc, impls)
+ do
+ var location: nullable Location = null
+ if lc isa MMSrcLocalClass then
+ var node = lc.node
+ if node != null then node.location
+ end
+ #if location == null then location = lc.mmmodule.location
+ var clas = new Array[MMLocalClass]
+ for i in impls do
+ clas.add(i.local_class)
+ end
+ self.fatal_error(location, "Property inheritance conflict in class {lc} for `{impls.first.name}': conflicting properties are defined in {clas.join(", ")}")
+ end
+end
+
# Class specialization hierarchy sorter
private class CSHSorter
super AbstractSorter[MMLocalClass]