Giter Club home page Giter Club logo

wollok-ts-cli's Introduction

Wollok-TS-CLI

Build CI codecov License: GPL v3 npm version

🖖 Welcome to the Wollok Command Line Interface!

demo

🔧 Available Commands

Wollok Command Line Interface should be run inside a Wollok project folder. This folder is considered as the wollok target project.

This is the list of the currently available commands:

  • --help: Shows the manual with all the options
  • --version: Shows the current version
  • run <program>: Runs a Wollok program on the target project.
  • test <filter>: Runs Wollok tests on the target project.
  • repl <auto-import>: Opens the Wollok REPL on the target project importing the auto-import path (if any).
  • init <name>: Creates a new Wollok project

💻 Installation instructions

Go to latest release, download the executable based on your operating system and add it to the PATH (here are instructions to do so in Mac, Windows and Linux).

Or install it using npm with the command npm i -g wollok-ts-cli. You must have NodeJS installed in your local machine.

Feel free to report issues on the project's issue tracker.

This component is part of the Wollok language project where you can have an overall picture of our roadmap.

👩‍💻 Contributing

All contributions are welcome!

Powered by Uqbar

wollok-ts-cli's People

Contributors

asanzo avatar fakedodain avatar fdodino avatar ferrommu avatar ivanpuchalka avatar ivojawer avatar julimr avatar marcosnicolau avatar mind-ar avatar nscarcella avatar palumbon avatar yoelsla avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wollok-ts-cli's Issues

[EPIC] Mejoras al Diagrama Dinámico

Ahora que estamos mejorando el Diagrama Dinámico, una épica con todas las mejoras.

Actualmente se ve así:
image

  • Renombrar List#asdfg -> a List o un/a List #82
  • Teniendo dos (o más) referencias superpuestas solo se muestra una #68
  • Agregarles el índice a las listas. #82
    • En Xtext creo que además todas las colecciones (List y Set) se mostraban en línea punteada (qué piensan?).
  • Que se vean mejor las flechas, ahora están muy claras. Tal vez convenga hacerlas más gruesas también.
  • #73
  • Diferenciar las referencias de variables y constantes #59
  • #70
  • #71
    • Darle una iterada a los colores / formas de los objetos (revisar XText, Dodino hizo un laburo arduo y fantástico encontrando colores, lo que incluía también diferenciaciones para distintos tipos de daltonismo).
    • En la imagen de acá, las palabras true y false no se leen bien
    • Los objetos de las colecciones los haría más chicos que el resto (?
    • Rectángulos para los strings, así entran cómodos. Alf: Me gusta más la forma redonda para todos los objetos, se puede quizás jugar con el tamaño o el borde para diferenciar. Es cómodo para explicar dinámico vs estático que el diagrama dinámico tenga cosas redondas (u ovaladas) versus lo cuadrado/rectangular del diag de clases. Bah, además de cómodo me gusta la metáfora que instancia es redondo y clase es cuadrado.
    • Un color particular para los objetos del proyecto (no lang). Alf: En ese sentido, que los objetos "primitivos" o los que vienen dados tengan una forma parecida a un objeto propio me parece una buena decisión didáctica: al fin y al cabo todos son objetos y entienden mensajes. Si los objetos que le alumne no puede tunearse quiere que sean distintos, podemos jugar con el tamaño (como el ejemplo de achicar el objeto de la colección) y/o el grosor del borde.

Dejar de empaquetar con electron

Los ejecutables generados por electron para windows son de tipo "GUI", a diferencia de los ejecutables generado por pkg que eran de tipo "console". Esta diferencia hace que el CLI sea inutilizable, ya que al correr el stdin no funciona con aplicacion graficas.

Entonces habria que volver a pkg y analizar alternativas a electron para mostrar los diagramas y correr juegos, por ejemplo, se podrian mostrar directamente en el browser.

error al correr juego de repo

repo publico: https://github.com/hernanconiglio/pacmanBasicGame

Error que arroja:

 *  Executing task: /home/hernan/wollok-dev/wollok-ts-cli-linux run 'program.pacman' --skipValidations -p /home/hernan/Objetos1/pacmanBasicGame/src 

Running program.pacman on /home/hernan/Objetos1/pacmanBasicGame/src
Running program.pacman...

✗ Uh-oh... An error occurred during the run!
  wollok.lang.EvaluationError wrapping TypeScript Error: Could not resolve reference to pacman or its a reference to void
    at program.pacman [program.wpgm:4]
    at root [--:--]
    Derived from TypeScript stack
    at Evaluation.exec (/snapshot/wollok-ts-cli/node_modules/wollok-ts/dist/interpreter/runtimeModel.js:283:39)
    at exec.next (<anonymous>)
    at Evaluation.execSend (/snapshot/wollok-ts-cli/node_modules/wollok-ts/dist/interpreter/runtimeModel.js:395:37)
    at execSend.next (<anonymous>)
    at Evaluation.exec (/snapshot/wollok-ts-cli/node_modules/wollok-ts/dist/interpreter/runtimeModel.js:268:49)
    at exec.next (<anonymous>)
    at Evaluation.execBody (/snapshot/wollok-ts-cli/node_modules/wollok-ts/dist/interpreter/runtimeModel.js:330:34)
    at execBody.next (<anonymous>)
    at Evaluation.exec (/snapshot/wollok-ts-cli/node_modules/wollok-ts/dist/interpreter/runtimeModel.js:256:49)
    at exec.next (<anonymous>)
✓ Game available at: http://localhost:3000
✓ Running game!

Mostrar los strings entre comillas

Ahora tanto si se imprime un objeto como un string se muestran igual:
image

Estaría bueno que los String se muestren con las comillas como en el IDE

Si abro dos veces el repl, la segunda no puede abrir el diagrama dinámico porque el puerto ya está usado

Wollok cli intenta abrir ambas veces en el puerto 3000 y la segunda falla con:

✗ File c:/Users/juanm/OneDrive/Documentos/Developmeectos/facu/pdep/Wollok/prueba_file.wlk doesn't exist or is outside of project!
✓ Object diagram available at: http://localhost:3000
wollok> node:events:505
throw er; // Unhandled 'error' event
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EADDRINUSE',
errno: -4091,
syscall: 'listen',
address: '127.0.0.1',
port: 3000
}

Como reproducir:

  • correr el repl de wollok cli en una terminal
  • una vez abrió, correr el repl de wollok cli en otra

unObjecto.toString() devuelve "ubicacion.unObjeto"

Cuando se realiza toString() de un objeto en vez de devolver el nombre del objeto como un string devuelve un string con la ubicacion de este "." y el nombre del objeto.

Por ej:

Captura de pantalla de 2022-06-03 16-46-21

Cabe destacar que como bien se ve en el ejemplo y como se especifico en este issue:
#4

Actualmente el objeto en cuestion para ser referenciado requiere su ubicación por lo que probablemente resolver ese issue resuelva este.

No mostrar el stack de la VM

Puede ser configurable, pero pienso que el default debería ser que no se muestre. Solamente debería aparece si está en modo DEBUG o algo así.

Así se ve ahora en el LSP cuando falla un test.

image

Agregar tests E2E

Como dice @nscarcella , esto es un CLI, tiene sentido tener tests de CLI.

  • La idea sería poder probar cosas como "escribo esto, pasa esto"
  • Se pueden buscar herramientas. La primera que me saltó es esta, pero por favor googleemos más: https://github.com/node-modules/clet . Veamos si vale la pena hacer lo que hace esta persona que testea todo a mano o tener algo que facilite.

Multiples referencias con el mismo source y target

Situacion actual

El diagrama dinamico no sabe manejar multiples referencias al mismo objeto, por ej con este codigo esta todo bien

object pepita {
  var property hijo = manolo

  var property estaPensandoEn = juan
}

object manolo {}

object juan {}
img

Pero si lo cambio a que apunte dos veces al mismo pierdo una de las flechas

object pepita {
  var property hijo = manolo

  var property estaPensandoEn = manolo
}

object manolo {}

object juan {}
img

Comportamiento esperado

No tengo a mano un Wollok XText pero si mal no recuerdo era una unica flecha con los nombres de las referencias separados por comas

Errores en nvm en Windows

  1. Invalid version en nvm, porque no reconoce el formato lts/gallium en el archivo .nvmrc
  2. Aún indicando la versión nvm no funciona: exit status 1: Acceso denegado.

image

Revisar los if(debug) time timeEnd

Hay que pegarle una revisada a los logs de profiling como estos:

if(debug) time(successDescription('Run finalized successfully'))
interpret(environment, natives).run(programFQN)
if(debug) timeEnd(successDescription('Run finalized successfully'))

export async function buildEnvironmentForProject(cwd: string): Promise<Environment> {
const paths = await globby('**/*.@(wlk|wtest|wpgm)', { cwd })
const debug = logger.getLevel() <= logger.levels.DEBUG
if(debug) time('Reading project files')
const files = await Promise.all(paths.map(async name =>
({ name, content: await readFile(join(cwd, name), 'utf8') })
))
if(debug) timeEnd('Reading project files')
if(debug) time('Building environment')
try { return buildEnvironment(files) }
finally { if(debug) timeEnd('Building environment' ) }
}

Quizás necesitemos otra herramienta de logging que me permita hacer esos profilings en lugar de usarla como un flag y nada más.

Error por constante llamada wollok

Estamos probando este proyecto y nos tira este error:
[ERROR]: missingReference at src/test.wtest:--

Llegamos a este mínimo test, si le cambiamos el nombre a la contante wollok por wollok2 el error desaparece.

import computadora.*
import programas.*

describe "TESTEOS DE PROGRAMA"{
	const windows = new SistemaOperativo(memoria = 2, disco = 2)
	const miPc = new Computadora(sistemaOperativo = windows, discoTotal = 150, memoriaTotal = 8)
	
	const wollok= new Programa(memoria = 1, disco = 4)

	test "ejecutar windows"	{
		miPc.ejecutar(windows)
		assert.equals([windows], miPc.programasEnEjecucion())
	}
}

"Could not resolve reference to" en el empaquetado de linux

Probado en Huayra (Debian based).
Es independiente de si lo corro en la carpeta actual o en otra.

Selection_028

✗ Uh-oh... An error occurred during the run!
  Error: Could not resolve reference to /home/alf/repos/pdep/2021/2021-o-recufeb/
    at Environment.getNodeByFQN (/snapshot/wollok-ts-cli/node_modules/wollok-ts/dist/model.js:654:19)
    at Environment.<anonymous> (/snapshot/wollok-ts-cli/node_modules/wollok-ts/dist/decorators.js:19:39)
    at Interpreter.run (/snapshot/wollok-ts-cli/node_modules/wollok-ts/dist/interpreter/interpreter.js:17:54)
    at Command.default_1 (/snapshot/wollok-ts-cli/dist/commands/run.js:25:72)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Command.parseAsync (/snapshot/wollok-ts-cli/node_modules/commander/lib/command.js:916:5)

Al correr Start a new REPL Session desde vscode en Windows, no encuentra el archivo actual

La ruta del archivo debería ser c:\Users\juanm\OneDrive\Documentos\Development\proyectos\facu\pdep\Wollok\prueba_file.wlk, según el mensaje de error no encuentra el archivo en la ruta c:UsersjuanmOneDriveDocumentosDevelopmentproyectosfacupdepWollokprueba_file.wlk

Executing task: C:/Users/juanm/Downloads/wollok-ts-cli-win.exe repl c:\Users\juanm\OneDrive\Documentos\Development\proyectos\facu\pdep\Wollok\prueba_file.wlk -p c:\Users\juanm\OneDrive\Documentos\Development\Initializing Wollok REPL for file c:UsersjuanmOneDriveDocumentosDevelopmentproyectosfacupdepWollokprueba_file.wlk on c:UsersjuanmOneDriveDocumentosDevelopmentproyectosfacupdepWollok
✓ No problems found building the environment!
✗ File c:UsersjuanmOneDriveDocumentosDevelopmentproyectosfacupdepWollokprueba_file.wlk doesn't exist or is outside of project!
✓ Object diagram available at: http://localhost:3000

image

image

Problema con los paths

Dice que hay un problema al buscar las imágenes.

Eso pasa porque se espera que el proyecto tenga cierta estructura y si no pasa explota todo.

Además, el parámetro -p solamente funciona al nivel del package del program... básicamente falla al buscar la entidad si:

  • El archivo con el program se encuentra en una subcarpeta del proyecto
  • El archivo con el program se llama igual que otra cosa (por más que sí funcionan los tests por ejemplo)

Error:

The "path" argument must be of type string. Received undefined
at new NodeError (node:internal/errors:371:5)
at validateString (node:internal/validators:120:11)
at Object.join (node:path:1172:7)
at getImages (/Users/palumbon/git/wollok-ts-cli/dist/mac-arm64/wollok-ts-cli.app/Contents/Resources/app/build/commands/run.js:137:38)
at Namespace.<anonymous> (/Users/palumbon/git/wollok-ts-cli/dist/mac-arm64/wollok-ts-cli.app/Contents/Resources/app/build/commands/run.js:89:31)
at Namespace.emit (node:events:526:28)
at Namespace.emitReserved (/Users/palumbon/git/wollok-ts-cli/dist/mac-arm64/wollok-ts-cli.app/Contents/Resources/app/node_modules/socket.io/dist/typed-events.js:56:22)
at /Users/palumbon/git/wollok-ts-cli/dist/mac-arm64/wollok-ts-cli.app/Contents/Resources/app/node_modules/socket.io/dist/namespace.js:141:26
at process.processTicksAndRejections (node:internal/process/task_queues:78:11)

Error "codeShouldBeReachable" cuando corro tests con booleans

Probando los test de wollok-language/sanity/basics/booleans/literals
Tira este error en la consola [ERROR]: codeShouldBeReachable at literals.wtest:41

Llegué a este mínimo test, donde tira el mismo error:

test "and operator used with literals true and false"{
    assert.notThat(false && true)
}

También pasa con estos asserts:

//assert.notThat(false and true)
//assert.notThat(false && false)
//assert.notThat(false and false)
//assert.that(true || true)
//assert.that(true or true)
//assert.that(true || false)

[EPIC] Levantar Wollok Game desde el CLI

Alguna estrategia charlada hoy:

  • Separar React de P5 (el dibujador) , de el Environment (wollok-ts). Hoy el proyecto https://github.com/uqbar-project/wollok-game-web separa React de lo demás, pero hay que separar más todavía.
  • Eso me va a permitir poder construir un cliente que sólo dibuje y lo ideal es que la evaluation esté corriendo en el CLI, el servidor.
  • Esto va a permitir luego poder manipular el estado del game desde el CLI y hacer cosas como tener el diagrama dinámico.
  • Quizás una comunicación entre ambos usando socket io.

Stack overflow al intentar instanciar un mixin

Al intentar instanciar un mixin debería decirme idealmente "No se puede instanciar un mixin" (como figura en la doc )

  • Tanto al instanciar en un REPL.
  • Como al intentar levantar un programa que lo intenta instanciar.
  • Aún sin las validaciones activadas.

Al correrlo en un repl

Lanza wollok.lang.StackOverflowException wrapping TypeScript RangeError: Maximum call stack size exceeded:

imagen

En Eclipse lanza este error en el repl:
imagen
Que tampoco es perfecto, pero al menos no es un stack overflow 😆

Al intentar instanciar en el código

Y si intento instanciar dentro del código:

mixin Mix { var property mix = 1 }

object instanciadorDeMixines {
	method instanciar() = new Mix() // Acá está el error
}

El ts-cli no me da info, sólo Uh-oh... Unexpected Error!:
imagen

Peeeero si lo pongo verboso tira TypeError: _a.isAbstract is not a function:

imagen

De lo que entiendo que hay una de las validaciones de new que le está mandando un mensaje a un nodo Mixin que no entiende isAbstract

Mientras que en Eclipse es coherente con lo que tira el REPL:

imagen

Y si lo intento ejecutar:

imagen

Activar asar

Cuando buildeamos dice

  • asar usage is disabled — this is strongly not recommended  solution=enable asar and use asarUnpack to unpack files that must be externally available
`

asar: false # We need the files to load Diagram and Game

REPL no encuentra archivo dentro del proyecto

Tengo un proyecto con subcarpetas (y un archivo de prueba justo dentro de src):

ejemplos-de-clase-wollok
\->src
      \->clase01
            \->entrenador.wlk
...
      \->prueba.wlk

El problema es que no me encuentra archivos dentro de subcarpetas

Initializing Wollok REPL for file /Users/palumbon/git/ejemplos-de-clase-wollok/src/clase01/entrenador.wlk on /Users/palumbon/git/ejemplos-de-clase-wollok
[WARNING]: shouldNotDefineUnusedVariables at src/clase04/atencionDeAnimales_parte2.wtest:78
[WARNING]: shouldNotDefineUnusedVariables at src/clase04/atencionDeAnimales_parte2.wtest:79
[WARNING]: shouldNotDefineUnusedVariables at src/clase04/atencionDeAnimales_parte2.wtest:80
[WARNING]: shouldHaveAssertInTest at src/clase08/ejemplos_testing.wtest:19
✗ File /Users/palumbon/git/ejemplos-de-clase-wollok/src/clase01/entrenador.wlk doesn't exist or is outside of project!

Pero sí el que está justa debajo de src

Initializing Wollok REPL for file /Users/palumbon/git/ejemplos-de-clase-wollok/prueba.wlk on /Users/palumbon/git/ejemplos-de-clase-wollok
[WARNING]: shouldNotDefineUnusedVariables at src/clase04/atencionDeAnimales_parte2.wtest:78
[WARNING]: shouldNotDefineUnusedVariables at src/clase04/atencionDeAnimales_parte2.wtest:79
[WARNING]: shouldNotDefineUnusedVariables at src/clase04/atencionDeAnimales_parte2.wtest:80
[WARNING]: shouldHaveAssertInTest at src/clase08/ejemplos_testing.wtest:19
wollok:prueba> 

Supongo que será algo relacionado con la conversión de URIs y paths...

Poder crear un nuevo proyecto desde un template

Estaría bueno poder crear un proyecto nuevo, con una estructura prederterminada.

Ejemplos:

  • Proyecto nuevo: Para ser usado regularmente. Crea un archivo .wlk con la definición de un objeto.
  • Tour: Para ver la sintaxis del lenguaje. Crea archivos .wlk .wtest .wpgm con distintas definiciones.
  • Game: Crea un template del juego, con los archivos y directorios esperados para ejecutar un juego

También estaría bueno agregar un archivo con metadata del proyecto:

  • En un momento se charló de tener un package.json (fuimos por esa idea en #85), pero podría ser cualquier nombre.
  • Que tenga
    • nombre del proyecto
    • Versión
    • Versión de Wollok donde se creó / está funcionando
    • assets?
    • main?

Serve assets de wollok game

          No me queda claro cuál es la mejor solución. De las formas que intentamos inferir con Tom, ninguna terminaba funcionando el 100% de los casos.

Prefiero ir con cosas menos mágicas, servir todas las "well known name folders" suena bien.

Originally posted by @PalumboN in #52 (comment)
Tambien en #52 (comment)

Añadir el comando "reload" al cli

Este comando debe reiniciar absolutamente todo desde 0. Es para resolver el "TODO:" dejado en el código.

Posible descripción:

  :reload | :r  Reloads all currently imported packages returning to an initial state.

Hacer QA al CLI

Necesitamos probar el cli contra varios proyectos que se usen en el aula para asegurarnos que corra más o menos bien.

Acá hay una posible lista de ellos para completar:
https://docs.google.com/spreadsheets/d/1Co9iVX3K69HxktaMaVHlHJicLAoZorYLdFiS9Moc-Ek/edit#gid=0

La idea es:

  • Agregar ahí proyectos que sepamos que se usan en diversos cursos y unis (preferentemente con tests)
  • Bajarse esos proyectos y correr wollok test con el cli sobre ellos y fijarse que pasen los tests
  • Marcar brevemente en la planilla los proyectos revisados con OK si fue todo bien o no ok y algún comment si hubo algo mal
  • Cargar todos los errores en issues en el proyecto correspondiente. (por ejemplo, si hay una validación que anda mal, cargarla en wollok-ts, o si es algo del cli cargarlo acá, cualquier cosa se puede mover sin drama)

Codear el comando "reload and rerun" del cli

Posible descripción:

:rr | Same as "reload" but additionaly reruns all commands written since last reload

  • En #19 ya hablamos sobre cómo implementar esto.
  • Hay que poder acceder a la lista de cosas escritas. Una posible forma de resolverlo sería ver si no se le puede preguntar la lista de cosas escritas en consola al objeto REPL. Otra posible forma sería guardarse esas cosas a mano.
  • Luego, simplemente hacer un reload, y correr una por una esas cosas.
  • Esto estaría bueno testearlo (que efectivamente haya corrido de nuevo, que funcione un doesnotunderstand anterior, etc.) Pero para eso probablemente sea necesario resolver antes: #21

Wollok Game + REPL + Diagrama dinámico = el sueño del pibe

Estaría bueno poder abrir Wollok Game desde el REPL también, así se puede usar junto al diagrama dinámico 🤩

Para eso estaría bueno que el juego se levante al hacer game.start().
Habría que configurar el drawer y "sobreescribir" la primitiva para que levante la ventana al buildear cualquier proyecto.

Con eso se podría evaluar el mensaje en el REPL y con eso levantar el juego ;)

Pkg no funciona en Windows

$ ./node_modules/.bin/pkg .
> [email protected]
> Targets not specified. Assuming:
  node16-linux-x86, node16-macos-x86, node16-win-x86
> Fetching base Node.js binaries to PKG_CACHE_PATH

> Error! 404: Not Found
> Not found in remote cache:
  {"tag":"v3.3","name":"node-v16.14.2-linux-x86"}
> Building base binary from source:
  built-v16.14.2-linux-x86
> Error! Not able to build for 'linux' here, only for 'win'

Setear la verbosidad del logger a nivel general y no sólo en la parte del repl

Las llamadas a loglevel.setLevel() y la decisión de si ponerle verboso o no deben estar en 1 solo lugar, preferentemente fuera del repl, y en un lugar más general.

Tengo la sensación de que hay que hacerlo acá:

const program = new Command()

En común para todos los commands.

JUSTO hay un ejemplo en la documentación de commander en "Life cycle hooks" en la que también se usa para algo como logueo. Se puede agregar un hook "preAction" que setee el nivel de logueo que queremos, y ahí en ese hook leer el verbose y setear el loglevel a partir de eso.

Scope al correr proyecto

El directorio o archivo que se corre debería tener el contexto actual, no tener que ir a buscarlo

En este ejemplo:
image

Si yo dije que quiero un REPL en src/arch1.wlk no debería tener que hacer import src.arch1.* para llegar a pepita, debería estar directamente disponible

El CLI debería poderse ejecutar desde cualquier carpeta

Sería genial poder escribir "wollok repl" en cualquier consola en cualquier carpeta y que eso abra un repl de wollok.

Hoy para hacer eso es tan sencillo como buildear este proyecto para obtener el ejecutable y:

  • Poner la carpeta donde está el ejecutable "wollok" en el PATH del sistema operativo o bien
  • Poner el ejecutable "wollok" dentro de una carpeta que ya esté en el PATH (como C:\Windows\System32 en windows, o /usr/bin en linux).

Si bien es algo bastante pavo de hacer (y hoy de hecho ya lo hacen, a veces, para instalar java) (no la mayoría), estaría bueno que este CLI no necesitara eso, y tuviera una forma de "instalarse" y "desinstalarse".

Veo dos caminos posibles:

  • Buscar una herramienta como electron-builder que me da instaladores automáticamente para todo sistema operativo, me resuelve el tema de firmarlos y todo (Windows y Mac son especialmente molestos con el tema de la firma) o bien
  • Resolverlo todo a pulmón como en pilas bloques, donde usamos electron-installer-debian para los deb de Linux, NSIS para Windows (con la herramienta makensis) y hdiutil para mac, que hacer los .dmg. Pero ya estos tienen problemas reportados en Pilas Bloques, así que yo investigaría de nuevo bastante.

Esta investigación puede ser un buen puntapié inicial por si queremos en algún momento empaquetar algo más que sólo el CLI.

¿@uqbar-project/wollok opiniones?

No deberían poderse instanciar WKOs

(quizás este issue vaya en wollok-ts)
Con el código de hoy, estoy pudiendo hacer en el REPL new pepita(), siendo pepita un wko:

imagen

Aunque al correr las validaciones da error, el mismo que el issue #35

object pepita{ var property energia = 100 }

object instanciadorDePepitas {
	method instanciar() = new pepita()
}

Da el error: TypeError: _a.isAbstract is not a function

imagen

Sería genial que no se pudieran instanciar cosas que no sean clases, y que eso se resuelva antes de validar, ¿quizás en el linkeo?

initializeInterpreter debería devolver una tupla.

Lo típico en estos casos en dónde una función retorna más de una cosa con tipos únicos es hacerla retornar una tupla en lugar de un objeto (en este caso, el tipo sería [Interpreter, Import[]] eso, utilizado con deconstrucción y spread, te evita tener esas colisiones de nombre incomodas como la de la linea 29, dónde querés setear algo que se llama igual que un campo de lo que recibís, entonces no lo podés deconstruir fácil.

Originally posted by @nscarcella in #22 (comment)

También deberíamos arreglar su comment siguiente:

#22 (comment)

Aborting run due to validation errors en wollok-ts

No me deja correr un proyecto por errores no vinculados al proyecto mismo sino a wollok-ts:

Por las validations shouldUseOverrideKeyword y shouldCatchUsingExceptionHierarchy

Selection_029

Esto es usando node 16 y tampoco anda usando node 14 (sospecho que porque justamente el error está en wollok-ts???)

Ahora bien:

Si hago --skipValidations con node 16:
Selection_028

Sigue teniendo problemas con wollok-ts:

Si hago --skipValidations con node 14 es distinto:

image

Pero eso es porque replaceAll está a partir de node 15.

Acabo de cambiar el Readme en #2 para que mencione esto.

Investigar WebView de VSCode

Investigar un toque VSCode: ¿puedo abrir una ventana/iframe apuntándole a una dire que yo diga? ¿puedo levantar wollok game en el vscode? ¿Puedo levantar un diagrama de objetos?

https://code.visualstudio.com/api/extension-guides/webview

Este issue tiene por objetivo saber cómo se implementa una "unión" entre una página cualquiera nuestra con VSCode, para intentar decidir qué hacer con el cli

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.