From b579d0f5f88327dac6fc1d7238b95afac01938d2 Mon Sep 17 00:00:00 2001 From: Marcus Denker Date: Fri, 8 Nov 2019 11:26:06 +0100 Subject: [PATCH] #parse should not wrap in a doit, as clients might want to use the Compiler to just parse an expression --- src/OpalCompiler-Core/OpalCompiler.class.st | 22 +++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/OpalCompiler-Core/OpalCompiler.class.st b/src/OpalCompiler-Core/OpalCompiler.class.st index b6d99b0a3b0..9892be3c568 100644 --- a/src/OpalCompiler-Core/OpalCompiler.class.st +++ b/src/OpalCompiler-Core/OpalCompiler.class.st @@ -282,6 +282,7 @@ OpalCompiler >> compilationContextClass: aClass [ OpalCompiler >> compile [ | cm | [ [ self parse. + self transformDoit. self doSemanticAnalysis. self callPlugins. ] on: ReparseAfterSourceEditing @@ -672,16 +673,10 @@ OpalCompiler >> parse: textOrStream in: aClass notifying: req [ { #category : #private } OpalCompiler >> parseExpression [ - | expression | - expression := self compilationContext optionParseErrors + ^ast := self compilationContext optionParseErrors ifTrue: [self parserClass parseFaultyExpression: source contents] - ifFalse: [self parserClass parseExpression: source contents]. - ast := context - ifNil: [expression asDoit] - ifNotNil: [expression asDoitForContext: context]. - ast compilationContext: self compilationContext. - ^ast. + ifFalse: [self parserClass parseExpression: source contents] ] { #category : #'public access' } @@ -739,6 +734,17 @@ OpalCompiler >> source: aString [ source := aString readStream. ] +{ #category : #'public access' } +OpalCompiler >> transformDoit [ + "if we compile an expression, we wrap it in a method here" + self compilationContext noPattern ifFalse: [ ^self ]. + ast := context + ifNil: [ast asDoit] + ifNotNil: [ast asDoitForContext: context]. + ast compilationContext: self compilationContext. + ^ast +] + { #category : #'old - deprecated' } OpalCompiler >> translate [ self