Git Product home page Git Product logo

babylonian-programming-smalltalk's People

Contributors

codezeilen avatar ekrebs5 avatar joeathpi avatar linaur avatar linqlover avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

cmfcmf linqlover

babylonian-programming-smalltalk's Issues

Execution results which return the receiving object itself should display 'self'

Currently, users see the unedited execution values for examples. When the executed message itself returns self, there is no telling by the button if the objects are the same or a new object of the receiving class is returned. Users have to inspect the object and manually check its object identity or check the return value of a message to ensure the object itself is returned. It's quicker to just display 'result: self' in these cases.
From:
image
to:
image

What to keep in mind:

  • BPExampleMorph >> exectuionResultAsString edits the displayed text
  • BPExampleMorph >> exectuionResultAsString may not execute the example method to eg. check if the receiver is the same after sending the message to the receiving class again

Method argument probes / visualizations

Probing method arguments would provide immediate context for a method. Either this is enabled by default for every method that has at least one probe, or users should be able to explicitly probe arguments.

ProbeMorphs retain keyboard focus

If you click into the text of a sample to give it keyboard focus, and then move the surrounding TextMorph, it does not get the focus back despite #mouseOverToKeyboardFocus being enabled.

(reported by @LinqLover)

In Debugger / ChangeList annotations can not be placed

Annotations can not be placed in the debugger because of it does not set #currentCompiledMethod. #determineIntervalToAnnotateFor:forNodes: should maybe not use internal state and use the #compiledMethod-Extension instead.

Also applies to ChangeList.

(reported by @LinqLover)

Reuse stack morph from line above in BPSwimlane

Currently, each line in a BPSwimlane consists of a morph for each called method in the stack.
However, if a line above any other line already defined a stack morph for a method, which is also called in that order for current line, the height of the previous morph should increase to cover the current line instead of making a new morph.
image.

This will decrease the morph count noticeably.

Serialize strings with ''

Currently strings (for example in expectedResult) are written into the test without ''. This will result in an syntax error for most strings

Editing experience of probes

The problem in a nutshell: When adding characters behind a probe, they are added to the probe, as attributes should propagate to successors.

Wenn man hinter dem letzten Zeichen des Ausdrucks, auf das sich eine Probe bezieht, weitertippt, landet die Addition beim Speichern innerhalb des annotierten Babylonian-Ausdrucks. In vielen Fällen eher wenig nützlich, beispielsweise, wenn man ein neues Statement eingetippt hat (z. B. hinter foo ein . bar). Ich hätte aber auch keine Idee, wie man das auf die Schnelle lösen könnte, ohne die Semantik von Attributen im normalen Editor auf den Kopf zu stellen

Improve support for concurrency

  • Propagate set of active layers to other processes
  • Propagate DynamicVariables to other processes
  • Ensure tracing is thread-safe
  • remember the newly created processes, as they also need to be stopped when anything goes wrong OR we want to terminate the example execution
  • Track exceptions in the descendant processes

Grammar misinterprets comments as by annotations

BPExtractAnnotations fails for (AdditionalMethodState >> #keysAndValuesDo:) bpAnnotations with "MessageNotUnderstood: UndefinedObject>>ruleName", bc of comments such as "<Association|Pragma>". The grammar should be more strict and not try to parse these as babylonian annotations.
Reported by @LinqLover

Instance variables of subclasses can not be easily accessed in expressions of expression probes

This one is tricky when one works with a method in a superclass A but investigates an execution of this method on an object of subclass B and one is interested in an instance variable that is only defined in B. As the probe expression block is compiled in the context of A the resulting bytecode can not access the instance variable of B, also it is unclear how it might go about this.

One solution may be to convert the static instance variable access to a dynamic one aka self instVarNamed: #instVarName. As the expression probe block is only instantiated during the method execution self binds to the correct object.

Annotating Slider does not work reliably

When annotating the main loop in displayLine: textLine offset: offset leftInRun: leftInRun the method can not be saved implying a syntax error in the annotated source code.

ScriptExamples should have proper RunConfigurations

Similar to what BPMethodExamples have. Otherwise BPScriptExample>>#runOn: throws UndeclaredVariableWarning which is unnecessary, as we have them set up. The RunConfiguration should also honor the setup scripts.

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.