Changeset 22249 for v6

Show
Ignore:
Timestamp:
09/14/08 23:34:35 (3 months ago)
Author:
pmurias
Message:

[smop]
redeclaration in m0ld are ignore instead of causing a bug
added failing test for modified output of pugs -Cm0ld '$*OUT.print("ok")' - trying to manually make it run see what's changes are needed to smop/pugs

Location:
v6/smop
Files:
1 added
2 modified

Legend:

Unmodified
Added
Removed
  • v6/smop/CMakeLists.txt

    r22230 r22249  
    8787    src/p6opaque.c 
    8888    src/smop.c 
     89    src/smop_haskell_ffi.c 
    8990    src/smop_internal.h 
    9091    src/smop_interpreter.c 
     
    150151    test/31_int_postfix_plusplus.m0ld 
    151152    test/32_array_iterator.m0ld 
     153    test/modified_pugs_output.m0ld 
    152154) 
    153155    set(c_file) 
  • v6/smop/m0ld/M0ld.hs

    r22246 r22249  
    211211addRegister regs stmt = case stmt of  
    212212    Decl reg None  -> regs 
    213     Decl reg value -> Map.insert reg (Map.size regs)  regs 
     213    Decl reg value -> if (Map.member reg regs) then regs else  Map.insert reg (Map.size regs)  regs 
    214214    _ -> regs 
    215215 
    216216addFreeRegister :: RegMap -> Stmt -> RegMap 
    217217addFreeRegister regs stmt = case stmt of 
    218     Decl reg None -> Map.insert reg (Map.size regs)  regs 
     218    Decl reg None -> if (Map.member reg regs) then regs else Map.insert reg (Map.size regs)  regs 
    219219    Decl reg _ -> regs  
    220220    _ -> regs 
     
    279279    Var name -> "¢" ++ name ++ "\n" 
    280280    SubMold stmts -> "{\n" ++ (prettyPrintBytecode ("  " ++ indent) stmts) ++ indent ++ "}\n" 
     281 
    281282prettyPrintBytecode indent stmts = 
    282283    let labelsMap = mapLabels stmts 
     
    286287        prettyPrintOp op = indent ++ (joinStr " " $ ( map show (toBytecode op regMap labelsMap))) ++ "\n" 
    287288        decls = [prettyPrintConstant indent c | Decl reg c <- filter (not . isReg) stmts] 
    288         in (concat $ map (\(i,e) -> indent ++ "$" ++ (show i) ++ " = " ++ e) (zip [0..(length decls - 1)] decls)) ++ 
    289             (concat $ map prettyPrintOp stmts) 
     289        in (concat $ map (\(i,e) -> indent ++ "$" ++ (show i) ++ " = " ++ e) (zip [0..(length decls - 1)] decls)) 
     290        ++ (concat $ map prettyPrintOp stmts) 
    290291 
    291292type ImplicitDecls = Map.Map Value [Char]