Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

problem with invert operator expression

Abierto
#887 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
javascript, python
Área
compilers

Línea de trabajo

Start with the provided Python sample and compare the two generated JavaScript forms in a Firefox 133 environment. Trace how the compiler handles ~(obj) versus the __invert__() method call; done means the operator expression dispatches correctly without the reported TypeError and the behavior has a regression check.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

IS: bug?

Expression with invert operator of an class instance causes error.

Error occurs with iobj = ~(obj) expression.
Browser error: Uncaught TypeError: Function.prototype.toString called on incompatible object.
Worked properly with iobj = obj.__invert__() expression.

python code:

class Obj:
    def __init__(self, x):
        self.x = x
    def __invert__(self):
        return ~self.x

# __pragma__ ('opov')
def op_invert():
    obj = Obj(42)
    if False:
        iobj = ~(obj)
# __pragma__ ('noopov')

op_invert()

compiled javascript code with ~(obj):

export var op_invert = function () {
	var obj = __call__ (Obj, null, 10);
	var iobj = ~(obj);
};

compiled javascript code with obj.__invert__():

export var op_invert = function () {
	var obj = __call__ (Obj, null, 10);
	var iobj = (function () {
		var __accu0__ = obj;
		return __call__ (__accu0__.__invert__, __accu0__);
	}) ();
};

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

Lenguaje dominante
Python
Estrellas
2.9k
Forks
218
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de TranscryptOrg/Transcrypt

Todos los issues de TranscryptOrg/Transcrypt

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.