mirror of
https://github.com/irmen/prog8.git
synced 2024-10-19 07:23:56 +00:00
fix symbol usage tracking, also track scopes themselves.
Fix directive option comparisons. Vars cannot overwrite builtin functions.
This commit is contained in:
parent
28ab7bbe34
commit
831d41dbc6
@ -3,8 +3,14 @@
|
|||||||
|
|
||||||
%import c64lib
|
%import c64lib
|
||||||
|
|
||||||
~ main $c003 {
|
~ not_main $d000 {
|
||||||
|
const float len1 = 111 ;len([1,2,3])
|
||||||
|
const float round1 = 111 ;len([1,2,3])
|
||||||
|
const float sin1 = 111 ;len([1,2,3])
|
||||||
|
float cos1 = 111 ;len([1,2,3])
|
||||||
|
}
|
||||||
|
|
||||||
|
~ main $c003 {
|
||||||
const word len1 = len([1,2,3,wa1, wa2, ws1, all1])
|
const word len1 = len([1,2,3,wa1, wa2, ws1, all1])
|
||||||
const word wa1 = ceil(abs(-999.22))
|
const word wa1 = ceil(abs(-999.22))
|
||||||
const byte wa2 = abs(-99)
|
const byte wa2 = abs(-99)
|
||||||
@ -145,10 +151,6 @@ some_label_def: A=44
|
|||||||
%asmbinary "derp", 0, 200
|
%asmbinary "derp", 0, 200
|
||||||
}
|
}
|
||||||
|
|
||||||
%option enable_floats
|
|
||||||
%option enable_floats
|
|
||||||
%option enable_floats
|
|
||||||
|
|
||||||
%import imported
|
%import imported
|
||||||
%import imported
|
%import imported
|
||||||
%import imported2
|
%import imported2
|
||||||
|
@ -53,6 +53,10 @@ class AstIdentifiersChecker : IAstProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun process(decl: VarDecl): IStatement {
|
override fun process(decl: VarDecl): IStatement {
|
||||||
|
if(BuiltinFunctionNames.contains(decl.name))
|
||||||
|
// the builtin functions can't be redefined
|
||||||
|
checkResult.add(NameError("builtin function cannot be redefined", decl.position))
|
||||||
|
|
||||||
val scopedName = decl.scopedname.joinToString(".")
|
val scopedName = decl.scopedname.joinToString(".")
|
||||||
val existing = symbols[scopedName]
|
val existing = symbols[scopedName]
|
||||||
if(existing!=null) {
|
if(existing!=null) {
|
||||||
|
@ -30,7 +30,7 @@ fun Number.toHex(): String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
data class Mflpt5(val b0: Short, val b1: Short, val b2: Short, val b3: Short, val b4: Short){
|
data class Mflpt5(val b0: Short, val b1: Short, val b2: Short, val b3: Short, val b4: Short) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val zero = Mflpt5(0, 0,0,0,0)
|
val zero = Mflpt5(0, 0,0,0,0)
|
||||||
|
Loading…
Reference in New Issue
Block a user