I have two languages, lets call them "Core" and "Meta"
Meta has a custom SNodeOperation concept, let's call it "doTheThing".
Core uses that operation in a couple places.
In Core's "behavior" and "editor" aspects, the reduction appears to work find, and the expected output is observed.
In the "typesystem" aspect, however, the DotExpression node containing "doTheThing" is simply replaced with "doTheThing" node.
Core Language Module: Depends on "Meta" and Extends "Meta"
Core.behavior model used languages includes "Meta"
Core.typesystem model used languages includes: Uses "Meta"
Meta Language Module: Extends jetbrains.mps.lang.smodel
Meta Language Generator Module: extends jetbrains.mps.lang.smodel#1139186730696, Priorities: Meta generator runs "=" all smodel generators
I have a template switch_DoTheThing_node extends switch_SNodeOperation_node.
I have nothing in my main configuration.
Maybe relevant: I'm working off my own build of the master branch of MPS, (pulled last friday), but I had similar problems with 2018.3.