Deprecate built-in _PI

Fixes #670
This commit is contained in:
Rangi
2020-12-30 09:28:59 -05:00
committed by Eldred Habert
parent 2a9d52871b
commit 10e3f1a02b
9 changed files with 29 additions and 8 deletions

View File

@@ -11,7 +11,7 @@
#include <stdint.h> #include <stdint.h>
void math_DefinePI(void); int32_t math_Callback_PI(void);
void math_Print(int32_t i); void math_Print(int32_t i);
int32_t math_Sin(int32_t i); int32_t math_Sin(int32_t i);
int32_t math_Cos(int32_t i); int32_t math_Cos(int32_t i);

View File

@@ -17,6 +17,7 @@
#include "asm/mymath.h" #include "asm/mymath.h"
#include "asm/symbol.h" #include "asm/symbol.h"
#include "asm/warning.h"
#define fx2double(i) ((double)((i) / 65536.0)) #define fx2double(i) ((double)((i) / 65536.0))
#define double2fx(d) ((int32_t)((d) * 65536.0)) #define double2fx(d) ((int32_t)((d) * 65536.0))
@@ -26,11 +27,13 @@
#endif #endif
/* /*
* Define the _PI symbol * Return the _PI symbol value
*/ */
void math_DefinePI(void) int32_t math_Callback_PI(void)
{ {
sym_AddEqu("_PI", double2fx(M_PI)); warning(WARNING_OBSOLETE, "`_PI` is deprecated; use 3.14159\n");
return double2fx(M_PI);
} }
/* /*

View File

@@ -720,5 +720,12 @@ void sym_Init(time_t now)
labelScope = NULL; labelScope = NULL;
anonLabelID = 0; anonLabelID = 0;
math_DefinePI(); /* _PI is deprecated */
struct Symbol *_PISymbol = createBuiltinSymbol("_PI");
_PISymbol->type = SYM_EQU;
_PISymbol->src = NULL;
_PISymbol->fileLine = 0;
_PISymbol->hasCallback = true;
_PISymbol->numCallback = math_Callback_PI;
} }

View File

@@ -0,0 +1,4 @@
; Remove this test case when _PI is removed.
PRINTF _PI
PRINTT "\n"
PURGE _PI

View File

@@ -0,0 +1,5 @@
warning: deprecated-pi.asm(2): [-Wobsolete]
`_PI` is deprecated; use 3.14159
ERROR: deprecated-pi.asm(4):
Built-in symbol '_PI' cannot be purged
error: Assembly aborted (1 errors)!

View File

@@ -0,0 +1 @@
3.14159

View File

@@ -13,7 +13,7 @@ PRINTT STRFMT(TEMPLATE, "roses", "red")
PRINTT STRFMT(TEMPLATE, "violets", "blue") PRINTT STRFMT(TEMPLATE, "violets", "blue")
PRINTT STRFMT(TEMPLATE, "void", 0, "extra") PRINTT STRFMT(TEMPLATE, "void", 0, "extra")
PRINTT STRCAT(STRFMT(STRFMT("%%%s.%d%s", "", 9, "f"), _PI), \ PRINTT STRCAT(STRFMT(STRFMT("%%%s.%d%s", "", 9, "f"), 3.14159), \
STRFMT(" ~ %s\n", STRFMT("%s%x", "thr", 238))) STRFMT(" ~ %s\n", STRFMT("%s%x", "thr", 238)))
PRINTT STRFMT("%d eol %", 1) PRINTT STRFMT("%d eol %", 1)

View File

@@ -1,11 +1,12 @@
n equ 300 n equ 300
m equ -42 m equ -42
f equ -123.0456 f equ -123.0456
pi equ 3.14159
s equs "hello" s equs "hello"
printt "<{ -6d:n}> <{+06u:n}> <{5x:n}> <{#16b:n}>\n" printt "<{ -6d:n}> <{+06u:n}> <{5x:n}> <{#16b:n}>\n"
printt "<{u:m}> <{+3d:m}> <{#016o:m}>\n" printt "<{u:m}> <{+3d:m}> <{#016o:m}>\n"
printt "<{f:_PI}> <{06f:f}> <{.10f:f}>\n" printt "<{f:pi}> <{06f:f}> <{.10f:f}>\n"
printt "<{#-10s:s}> <{10s:s}>\n" printt "<{#-10s:s}> <{10s:s}>\n"
foo: macro foo: macro

View File

@@ -1,3 +1,3 @@
ERROR: string-formatting.asm(9): ERROR: string-formatting.asm(10):
Formatting string with prefix flag '#' Formatting string with prefix flag '#'
error: Assembly aborted (1 errors)! error: Assembly aborted (1 errors)!