[Oberon] objects and jewels

Chris Burrows chris at cfbsoftware.com
Wed Feb 20 12:37:46 CET 2013

> -----Original Message-----
> From: Frans-Pieter Vonck [mailto:fp at vonck.nl]
> Sent: Wednesday, 20 February 2013 5:42 AM
> To: Felix Friedrich
> Cc: ETH Oberon and related systems
> Subject: Re: [Oberon] objects and jewels
> > An attempt to call a non-initialized procedure variable usually
> > results in a trap.
> I'm curious, do you think this an code error that should be discovered by
> the compiler instead of generating a trap at runtime?

No. In most non-trivial cases it is not possible to determine, at the time a
program is compiled, if a procedure variable will have a valid value at
runtime whenever the procedure variable is called. 

Consider the following examples. Apart from the first (which is both legal
and very useful), all only have a *possibility* that the procedure variable
is initialised, but it is not until runtime that you will know for sure. 


procVar := NIL;


IF ch = 'U' THEN
  outputProc := WriteToUART
  outputProc := WriteToLCD




procVar := someOtherProcVar;


  ProcType = PROCEDURE(param1, param2: INTEGER);
  ProcArray = ARRAY 10 OF ProcType;
  p1, p2: ProcArray;
  param1, param2: INTEGER;
p1 := p2;
p1[7](param1, param2);


etc. etc.


Chris Burrows
CFB Software
Astrobe v4.3 - Oberon for ARM Cortex-M3 Microcontrollers


More information about the Oberon mailing list