problem with in-place floordiv expression

Open
#886 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
javascript, python
Domain
compilers

Research direction

Start by compiling the provided Python reproduction containing x //= y inside __pragma__('opov'), then inspect the generated JavaScript around __call__ (Never here, null, x, y). Confirm the compiler emits valid JavaScript and preserves in-place floor-division behavior under opov, while existing arithmetic operators remain unaffected.

Written by the indexing model from the issue text.

Description

IS: bug?

Expression with in-place floordiv operator within __pragma__('opov') causes error.

Error occurs with x //= y within __pragma__('opov').
Browser error: Uncaught SyntaxError: missing ) after argument list.
Causes whole script to fail execution when code is present even if not called.
Compiler error occurs with ifloordiv (x //= y), no error with floordiv (x = x//y).
Appears to be a compilation error though compiles with no error notice.
No error with other in-place arithmetic ops (+=, /=, %= ...).

python code:

def idiv():
    x = 5
    y = 2
    x //= y
    print(x)

def idiv_opov():
    x = 5
    y = 2
    # __pragma__('opov')
    x //= y
    # __pragma__('noopov')
    print(x)

idiv()

compiled javascript code:

export var idiv = function () {
	var x = 5;
	var y = 2;
	var x = Math.floor (x / y);
	print (x);
};
export var idiv_opov = function () {
	var x = 5;
	var y = 2;
	var x = __call__ (Never here, null, x, y);
	print (x);
};
idiv ();

env: Python3.9 venv with pip install Transcrypt
testing: Firefox version 133 in Linux

Dominant language
Python
Stars
2.9k
Forks
218
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from TranscryptOrg/Transcrypt

All issues in TranscryptOrg/Transcrypt

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.