py/parsenum: Fix parsing of complex "j" and also "nanj", "infj".
Prior to this commit, complex("j") would return 0j, and complex("nanj")
would return nan+0j. This commit makes sure "j" is tested for after
parsing the number (nan, inf or a decimal), and also supports the case of
"j" on its own.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -291,9 +291,6 @@ parse_start:
|
||||
if (str == top) {
|
||||
goto value_error;
|
||||
}
|
||||
} else if (allow_imag && (dig | 0x20) == 'j') {
|
||||
real_imag_state |= REAL_IMAG_STATE_HAVE_IMAG;
|
||||
break;
|
||||
} else if (dig == '_') {
|
||||
continue;
|
||||
} else {
|
||||
@@ -327,6 +324,15 @@ parse_start:
|
||||
}
|
||||
}
|
||||
|
||||
if (allow_imag && str < top && (*str | 0x20) == 'j') {
|
||||
if (str == str_val_start) {
|
||||
// Convert "j" to "1j".
|
||||
dec_val = 1;
|
||||
}
|
||||
++str;
|
||||
real_imag_state |= REAL_IMAG_STATE_HAVE_IMAG;
|
||||
}
|
||||
|
||||
// negate value if needed
|
||||
if (dec_neg) {
|
||||
dec_val = -dec_val;
|
||||
|
||||
Reference in New Issue
Block a user