more intuitive left shift and right shift operators

Before:
 * << is left shift, not allowed to shift 1 bits out
 * <<% is left shift, allowed to shift 1 bits out
 * >> is right shift, allowed to shift 1 bits out

After:
 * << is left shift, allowed to shift 1 bits out
 * >> is right shift, allowed to shift 1 bits out
 * @shlExact is left shift, not allowed to shift 1 bits out
 * @shrExact is right shift, not allowed to shift 1 bits out

Closes #413
This commit is contained in:
Andrew Kelley
2017-08-09 10:09:38 -04:00
parent 54675b060a
commit 35d3444e27
28 changed files with 274 additions and 128 deletions

View File

@@ -44,7 +44,7 @@ fn modf32(x: f32) -> modf32_result {
// no fractional part
if (e >= 23) {
result.ipart = x;
if (e == 0x80 and u <<% 9 != 0) { // nan
if (e == 0x80 and u << 9 != 0) { // nan
result.fpart = x;
} else {
result.fpart = @bitCast(f32, us);
@@ -88,7 +88,7 @@ fn modf64(x: f64) -> modf64_result {
// no fractional part
if (e >= 52) {
result.ipart = x;
if (e == 0x400 and u <<% 12 != 0) { // nan
if (e == 0x400 and u << 12 != 0) { // nan
result.fpart = x;
} else {
result.fpart = @bitCast(f64, us);